所有
我有一个很大的用户电子邮件列表,我需要获取每个用户的域名和域名。
我的组织包含大量域名,我们的用户使用与其电子邮件地址不同的用户名登录其计算机。
请告知我们是否可以编写可以使用每个用户的电子邮件搜索AD的C#实用程序,或者我们是否可以以更简单的方式执行此操作。
答案 0 :(得分:1)
如果该数据全部在AD中,那么您可以使用LDAP查询它。在这种情况下,我建议使用DirectorySearcher,因为您使用的是.NET。
答案 1 :(得分:1)
您使用的是.NET 3.5吗?如果是这样 - AD在.NET 3.5中有很多新功能 - 请查看Ethan Wilanski和Joe Kaplan撰写的这篇文章Managing Directory Security Principals in .NET 3.5。
一个重要的新功能是“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
}
希望这有帮助!
马克