下面的代码有两个目标
1) 获取属于特定 AD 组的用户列表
2) 获取属于该组的所有用户的电子邮件/姓氏/名字
如果有更好的方法来完成这两者,请告诉我。
我能够获得完整的 DN,但我不确定如何从完整的 DN 中获取剩余数据,或者如果有更好的方法来提取此信息,请告诉我。以下是我正在使用的代码,但出现错误:
The value provided for adsObject does not implement IADs.
当我尝试使用完整的 DN 执行 DirectorySearcher 时。
HashSet<string> User_Collection = new HashSet<string>();
SearchResultCollection sResults = null;
DirectoryEntry dEntryhighlevel = new DirectoryEntry("LDAP://CN=Global_Users,OU=Astrix,OU=Clients,OU=Channel,DC=astro,DC=net");
foreach (object dn in dEntryhighlevel.Properties["member"])
{
DirectoryEntry dEntry = new DirectoryEntry(dn);
Console.WriteLine(dn);
DirectorySearcher dSearcher = new DirectorySearcher(dEntry);
//filter just user objects
dSearcher.SearchScope = SearchScope.Base;
//dSearcher.Filter = "(&(objectClass=user)(dn="+dn+")";
dSearcher.PageSize = 1000;
sResults = dSearcher.FindAll();
foreach (SearchResult sResult in sResults)
{
string Last_Name = sResult.Properties["sn"][0].ToString();
string First_Name = sResult.Properties["givenname"][0].ToString();
string Email_Address = sResult.Properties["mail"][0].ToString();
User_Collection.Add(Last_Name + "|" + First_Name + "|" + Email_Address);
}
速度很重要,是的,我知道我没有按照设计使用 HashSet。