Как получить список групп в группе Active Directory - PullRequest
2 голосов
/ 03 июня 2010

Я пытаюсь получить список групп, входящих в группу AD, используя .NET.

Например, у меня есть группа 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 Ответ

4 голосов
/ 03 июня 2010

Похоже, если вы не выполняете 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...