以下のコードには2つの目標があります
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 を使用していないことを理解しています。