2009-12-18 80 views
11

我想使用AccountManagement來列出組織單位中的所有組。使用DirectoryServices.AccountManagement從OU獲取組

下面的代碼片段適用於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(); 

有沒有人有想法?

謝謝!

回答

32

您可以設置PrincipalContext的OU要開始搜索,並在System.DirectoryService.AccountManagement使用PrincipalSearcher -class來完成你所需要的,是這樣的:

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

太感謝你了!我曾嘗試過,但錯過了通配符「*」。 – teebot 2009-12-18 11:20:18

+1

感謝'DistinguishedName' – dbardakov 2014-11-25 12:03:36

相關問題