2016-01-06 72 views
1

我期望獲得屬於特定組「groupName」的用戶列表傳遞給私有方法。Ldap查詢特定於某個組的所有成員

DirectoryEntry de = new DirectoryEntry("LDAP://DC=xxxx,DC=net"); // Root Directory // 
var ds = new DirectorySearcher(de); 
ds.PropertiesToLoad.Add("SAMAccountName"); 
ds.PropertiesToLoad.Add("member"); 
ds.Filter = "(&(objectClass=group)(SAMAccountName=" + groupName + "))"; 
SearchResultCollection AllGroupUsers;  
AllGroupUsers = ds.FindAll(); 

該查詢返回3個屬性: - adspath,accountName和成員。 會員是我真的很after.I如下面的代碼片斷展示了訪問成員屬性和它的價值是什麼: -

if (AllGroupUsers.Count > 0) 
    { 
    ResultPropertyValueCollection values = AllGroupUsers[0].Properties["member"]; 

但奇怪的事情發生在這裏。在等號的RHS上,AllGroupUsers對於特定成員的值爲「CN = Mike Schoomaker R,......」

雖然在等號的LHS上,值有「CN = Mike Schoomaker(OR),.....「

我不太清楚這是怎麼可能的......它不會發生在AllGroupUsers下的每一個值......我唯一知道的就是它發生在活動目錄上的外部用戶...任何人都可以告訴我如何解決這個問題,並得到實際的名字,姓氏和MiddleInitial?

+0

你熟悉PrincipalContext你可以得到組用戶以及我會發佈一個例子 – MethodMan

+0

其他工作示例在這裏.. http://stackoverflow.com/questions/5309988/how-to-get-the-groups-of-a-user-in-有源目錄-C-ASP-N et做一個簡單的谷歌搜索 – MethodMan

回答

1
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // find a user 
    using (var group = GroupPrincipal.FindByIdentity(ctx, "groupName")) 
    { 
     if (group == null) 
     { 
      MessageBox.Show("Group does not exist"); 
     } 
     else 
     { 
      var users = group.GetMembers(true); 
      foreach (UserPrincipal user in users) 
      { 
       //user variable has the details about the user 
      } 
     } 
     } 
} 
+0

這不是我要求的答案... – Philo

+0

你可以用GroupName做同樣的事情我會編輯並顯示你一秒 – MethodMan

+0

我想解決一個難題,而不是使它只是工作......我已經看到你發佈的例子。謝謝 – Philo

0

爲了得到一個用戶,而不是一組您應該設置DirectoryEntry對象,並使用相應的屬性(如displayNamesngivenNameinitials

例子:

...  
AllGroupUsers = ds.FindAll(); 
if (AllGroupUsers.Count > 0) { 
    ResultPropertyValueCollection values = AllGroupUsers[0].Properties["member"]; 
    foreach (string s in values) 
    { 
     DirectoryEntry u = new DirectoryEntry("LDAP://" + s); 
     Console.WriteLine(u.Properties["displayName"].Value); 
    } 
} 
相關問題