2009-07-14 56 views
0

所有,我可以使用C#

我有用戶的電子郵件的大名單中搜索Active Directoy檢索域名和用戶名,我需要爲他們每個人得到的用戶名和域名。

我的組織含有大量的域和我們的用戶登錄到其使用機器的用戶名是從他們的電子郵件地址不同。

請告知,如果我們可以寫一個C#程序,可以使用每個用戶的電子郵件搜索廣告,或者如果我們能以更簡單的方式做到這一點。

回答

1

你在.NET 3.5上嗎?如果是這樣的 - 廣告在.NET 3.5強大的新功能 - 看看這篇文章Managing Directory Security Principals in .NET 3.5由伊森Wilanski和喬·卡普蘭。

其中一個大的新功能是「PrincipalSearcher」級應該大大簡化了查找用戶和/或組中的AD。

如果您不能使用.NET 3.5,使用的DirectorySearcher並指定電子郵件地址作爲搜索條件,並獲取用戶名(其中一個有一個極大不同的用戶名?!):

DirectoryEntry deRoot = new DirectoryEntry("LDAP://cn=Users,dc=yourdomain,dc=com"); 

DirectorySearcher deSrch = new DirectorySearcher(deRoot); 

deSrch.SearchScope = SearchScope.Subtree; 

deSrch.PropertiesToLoad.Add("sn"); // surname = family name 
deSrch.PropertiesToLoad.Add("givenName"); 
deSrch.PropertiesToLoad.Add("samAccountName"); 

deSrch.Filter = string.Format("(&(objectCategory=person)(mail={0}))", emailAddress); 

foreach(SearchResult sr in deSrch.FindAll()) 
{ 
    // you can access the properties of the search result 
    if(sr.Properties["sn"] != null) 
    { 
    string surname = sr.Properties["sn"][0].ToString(); 
    } 
    // and so on, for all the other properties, too 
} 

希望這有助於!

馬克

1

如果該數據是所有AD的話,你也許可以使用LDAP查詢。在這種情況下,因爲您使用的是.NET,所以我建議您使用DirectorySearcher