2016-06-13 57 views
2

我想得到一個用戶組的列表直接的成員(即沒有嵌套)。實際上,以獲取你的會員選項卡的廣告中看到:我如何才能得到一個用戶來自AD的組而不嵌套

enter image description here

我使用下列獲得團體名單:

public List<GroupPrincipal> GetGroups(string userName) 
{ 
    List<GroupPrincipal> result = new List<GroupPrincipal>(); 
    PrincipalContext myDomain = new PrincipalContext(ContextType.Domain, "mydomain.com"); 
    UserPrincipal user = UserPrincipal.FindByIdentity(myDomain, userName); 
    if (user != null) 
    { 
     PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups(); 
     try 
     { 
      // iterate over all groups 
      foreach (Principal p in groups) 
      { 
       // make sure to add only group principals 
       if (p is GroupPrincipal) 
       { 
        result.Add((GroupPrincipal)p); 
       } 
      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 
    return result; 
} 

然而,這種檢索所有羣體,包括嵌套的。 (即,如果在上面的屏幕截圖的列表中有一個組嵌套在另一個組中 - 兩個組都返回)。

我該如何檢索Active Directory中顯示的列表?

回答

1

GetAuthorizationGroups()將遞歸地獲得所有安全組+額外的組,例如在登錄時評估的主組或主動主體。

使用GetGroups()代替:

此方法僅返回其主要是直接所屬的組;不執行遞歸搜索。遞歸搜索結果可用於用戶主體對象。有關更多信息,請參閱GetAuthorizationGroups方法。

相關問題