2009-12-18 25 views
11

Tôi muốn sử dụng AccountManagement để liệt kê tất cả các nhóm trong một Đơn vị tổ chức.Nhận các nhóm từ OU bằng cách sử dụng DirectoryServices.AccountManagement

Đoạn mã sau hoạt động với DirectoryServices nhưng tôi sẽ phải instanciate GroupPrincipal với đường dẫn DirectoryEntry trong kết quả (mà cảm thấy giống như một sửa chữa bẩn).

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

Có ai có ý tưởng không?

Cảm ơn!

Trả lời

32

Bạn có thể đặt PrincipalContext đến OU nơi bạn muốn bắt đầu việc tìm kiếm và sử dụng các PrincipalSearcher đẳng cấp trong System.DirectoryService.AccountManagement để thực hiện những gì bạn cần, như thế này:

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

Cảm ơn bạn rất nhiều !! Tôi đã thử điều đó nhưng bỏ lỡ ký tự đại diện "*". – teebot

+1

Cảm ơn 'DistinguishedName' – dbardakov

Các vấn đề liên quan