使用DirectoryServices.AccountManagement从OU获取组

时间:2009-12-18 09:44:09

标签: c# .net active-directory directoryservices

我想使用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();

有人有想法吗?

谢谢!

1 个答案:

答案 0 :(得分:37)

您可以将PrincipalContext设置为要开始搜索的OU,并使用PrincipalSearcher中的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();