17

AccountManagement を使用して、組織単位内のすべてのグループを一覧表示したいと考えています。

次のスニペットは DirectoryServices で動作しますが、結果の DirectoryEntry パスを使用して GroupPrincipal をインスタンス化する必要があります (これは汚い修正のように感じます)。

DirectoryEntry root = new DirectoryEntry("LDAP://OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local")
        DirectorySearcher ds = new DirectorySearcher(root);
        ds.Filter = "(objectCategory=group)";
        SearchResultCollection results = ds.FindAll();

誰かアイデアはありますか?

ありがとう!

4

1 に答える 1

42

PrincipalContext次のように、検索を開始するOUにを設定し、 PrincipalSearcher-classinを使用しSystem.DirectoryService.AccountManagementて必要なことを実行できます。

PrincipalContext yourOU = new PrincipalContext(ContextType.Domain, "mycompany.local", "OU=Marketing,OU=Operations,OU=Applications,DC=mycompany,DC=local");
GroupPrincipal findAllGroups = new GroupPrincipal(yourOU, "*");
PrincipalSearcher ps = new PrincipalSearcher(findAllGroups);
foreach(var group in ps.FindAll())
{
  Console.WriteLine(group.DistinguishedName);
}
Console.ReadLine();
于 2009-12-18T10:45:05.183 に答える