作者 主題: 使用.net 抓出 ad AD 中 user account 及 email  (閱讀 7209 次)

0 會員 與 1 訪客 正在閱讀本文。

小徒兒

  • 鑽研的研究生
  • *****
  • 文章數: 622
    • 檢視個人資料
先在項目中引用
//System.DirectoryServices.dll

代碼: [選擇]

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.DirectoryServices;

namespace EIS
{
/// <summary>
/// Index 的摘要描述。
/// </summary>
public class Index : System.Web.UI.Page
{
private int haha;

private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者
System.DirectoryServices.DirectoryEntry de;
de = new DirectoryEntry("LDAP://127.0.0.1","Administrator","password");
int i=0;
haha=0;
Response.Write("<table border=0>");
GetChild(de,i);
Response.Write("</table>");

}
private void GetChild(DirectoryEntry de,int i)
{
foreach(DirectoryEntry de2 in de.Children)
{
char xx= '-';
if(de2.SchemaClassName=="user")
{
string oo="";
if(de2.Properties.Contains("mail"))
{
oo=de2.Properties["mail"].Value.ToString();
}
Response.Write("<TR><TD>"+de2.Name.Replace("CN=","")+"</TD><TD>"+de2.Properties["sAMAccountName"].Value.ToString()+"</TD><TD>"+oo+"</TD></TR>");


haha+=1;
}
if(de2.SchemaClassName=="organizationalUnit")
{
GetChild(de2,i+4);
}
}

}

#region Web Form
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 此為 ASP.NET Web Form
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 此為
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}



代碼: [選擇]

 Dim i As Integer = 0
        '   Dim totalsub As Integer = 0, addsub As Integer = 0
        Dim IDText As String = "andy"
        Dim PWText As String = "OOXX"
        Try
            '正向檢查AD-->SQL
            'Dim MYDBCONN As String = Session("SQLServerString") '正式使用
            '    Dim MYDBCONN As String = System.Configuration.ConfigurationManager.AppSettings("SQLServerString")
            Dim entry As New DirectoryEntry("LDAP://suncolor.com.tw", IDText, PWText, AuthenticationTypes.Secure)
            Dim searcher As New DirectorySearcher("(&(objectCategory=person)(objectClass=user))")
            searcher.SearchRoot = entry
            searcher.PropertiesToLoad.Add("*")

            Dim result As SearchResult

            Dim Title As String = "" '職稱
            Dim UID As String = "" '員工編號
            Dim Displayname As String = "" '顯示名稱
            Dim sAMAccountName As String = "" '登入帳號
            Dim CN As String = "" '姓加名
            Dim Mail As String = "" 'Mail Address
            Dim PwdLastSet As String = "" '密碼最後重置日期
            Dim MaxPwdAge As String = "" '密碼到期日
            'Dim DataSource As String = "AD"
            'Dim EipLogon As String = "Y"

            Dim DS As New DataSet
            DS.Tables.Add("ADUserDB")
            DS.Tables("ADUserDB").Columns.Add("UID")
            DS.Tables("ADUserDB").Columns.Add("Displayname")
            DS.Tables("ADUserDB").Columns.Add("ID")
            DS.Tables("ADUserDB").Columns.Add("CN")
            DS.Tables("ADUserDB").Columns.Add("Title")
            DS.Tables("ADUserDB").Columns.Add("Mail")
            DS.Tables("ADUserDB").Columns.Add("PwdLastSet")
            DS.Tables("ADUserDB").Columns.Add("MaxPwdAge")
            DS.Tables("ADUserDB").Columns.Add("TEST")

            Dim ADCount As Integer = 0 'ADUser 資料筆數

            If DS.Tables("ADUserDB").Rows.Count = 0 Then
                ADCount = 0
            Else
                ADCount = DS.Tables("ADUserDB").Rows.Count
            End If



            For Each result In searcher.FindAll()
                '判斷員工編號欄是否有資料
                '將所有AD員工資料放入DS.table("AdUserDB")
                If (result.Properties.Contains("mail").ToString) <> "" And (result.Properties.Contains("description").ToString) <> "" And (result.Properties.Contains("Department").ToString) Then '
                    DS.Tables("ADuserDB").Rows.Add()
                    DS.Tables("ADUserDB").Rows(ADCount).Item("UID") = result.Properties("description")(0).ToString
                    DS.Tables("ADUserDB").Rows(ADCount).Item("Displayname") = result.Properties("displayname")(0).ToString()
                    DS.Tables("ADUserDB").Rows(ADCount).Item("ID") = result.Properties("sAMAccountName")(0).ToString()
                    DS.Tables("ADUserDB").Rows(ADCount).Item("CN") = result.Properties("CN")(0).ToString()
                    If result.Properties.Contains("title").ToString Then
                        DS.Tables("ADUserDB").Rows(ADCount).Item("Title") = result.Properties("Title")(0).ToString
                    End If
                    DS.Tables("ADUserDB").Rows(ADCount).Item("Mail") = result.Properties("mail")(0).ToString()
                    DS.Tables("ADUserDB").Rows(ADCount).Item("PwdLastSet") = Convert.ToInt64(result.Properties("PwdLastSet")(0))
                    If result.Properties.Contains("maxpwdage").ToString Then
                        DS.Tables("ADUserDB").Rows(ADCount).Item("MaxPwdAge") = result.Properties("MaxPwdAge")(0).ToString()
                    End If
                    '

                    Dim test As String = "lmPwdHistory"
                    If result.Properties.Contains(test).ToString Then
                        DS.Tables("ADUserDB").Rows(ADCount).Item("TEST") = result.Properties(test)(0).ToString
                    End If

                    ADCount = ADCount + 1
                End If
            Next

        Catch ex As Exception
            MsgBox(ex.Message)
        Finally

        End Try



Source From Andyi


小徒兒

  • 鑽研的研究生
  • *****
  • 文章數: 622
    • 檢視個人資料
add property in the user schema
« 回覆 #2 於: 2005-08-15 07:49 »
by Active Directory tool

Active Directory Schema

regsvr32 schmmgmt.dll 註冊