技術討論區 > .NET程式設計討論區
使用.net 抓出 ad AD 中 user account 及 email
(1/1)
小徒兒:
先在項目中引用
//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
小徒兒:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_userprincipalname.asp
小徒兒:
by Active Directory tool
Active Directory Schema
regsvr32 schmmgmt.dll 註冊
導覽
[0] 文章列表
前往完整版本