C# 使用DirectoryServices.AccountManagement从OU获取组

C# 使用DirectoryServices.AccountManagement从OU获取组,c#,.net,active-directory,directoryservices,C#,.net,Active Directory,Directoryservices,我想使用AccountManagement列出组织单位中的所有组 以下代码段适用于DirectoryServices,但我必须将GroupPrincipal与结果中的DirectoryEntry路径实例化(这感觉像一个脏补丁) 有人有主意吗 谢谢 您可以将PrincipalContext设置为要开始搜索的OU,并使用System.DirectoryService.AccountManagement中的PrincipalSearcher-类来完成所需操作,如下所示: PrincipalContex

我想使用AccountManagement列出组织单位中的所有组

以下代码段适用于DirectoryServices,但我必须将GroupPrincipal与结果中的DirectoryEntry路径实例化(这感觉像一个脏补丁)

有人有主意吗


谢谢

您可以将
PrincipalContext
设置为要开始搜索的OU,并使用
System.DirectoryService.AccountManagement
中的
PrincipalSearcher
-类来完成所需操作,如下所示:

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();

非常感谢你!!我已经试过了,但是错过了通配符“*”。谢谢你的
discrimitedName
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();