如何获取Active Directory组中的组列表

时间:2010-06-03 00:19:54

标签: c# .net active-directory

我正在尝试使用.NET获取AD组中的组列表。

例如,我有一个名为TestGroup的组,在该组中我有组DomainAdministrators。

使用下面的代码,我可以获得所有用户,包括来自DomainAdministrators组的用户,但不包括组本身。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DomainName");
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "TestGroup");

ArrayList members = new ArrayList();

if (grp != null)
{
    foreach (Principal p in grp.GetMembers(true))
    {
        members.Add(p.Name)
    }

}   
grp.Dispose();
ctx.Dispose();

我没有使用GetMembers,而是尝试了GetGroups,但这并没有返回任何内容。如何归还组中的组?

1 个答案:

答案 0 :(得分:4)

如果你没有递归执行GetMembers(传入false),你会得到用户和组,只需要按StructuralObjectClass进行过滤。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DomainName"); 
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "TestGroup"); 

ArrayList users = new ArrayList();
ArrayList groups = new ArrayList(); 

if (grp != null) 
{ 
    foreach (Principal p in grp.GetMembers(false)) //set to false
    {
        if (p.StructuralObjectClass == "user")
            users.Add(p.Name);
        else if (p.StructuralObjectClass == "group")
            groups.Add(p.Name);
    }
}    
grp.Dispose(); 
ctx.Dispose();