【发布时间】:2012-06-16 23:36:50
【问题描述】:
下面的代码我有两个目标
1) 获取属于特定广告组的用户列表
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。
【问题讨论】:
标签: c# active-directory