Поиск в Active Directory всех групп и пользователей, соответствующих определенному имени в c #, с использованием System.DirectoryServices.AccountManagement? - PullRequest
2 голосов
/ 31 января 2012

Кажется, System.DirectoryServices.AccountManagement предоставляет запрос в качестве примера, который может искать только один тип объекта за раз.

Имеет System.DirectoryServices.AccountManagement доказывает метод, с помощью которого я могу искать во всем активном каталоге пользователей или группы, соответствующие определенному имени или некоторым другим критериям, или я должен вернуться к Система. DirectoryServices.DirectorySearcher .

1 Ответ

1 голос
/ 31 января 2012

Полагаю, вы сможете сделать это в S.DS.AM.И UserPrincipal, и GroupPrincipal, в конечном счете, происходят от Principal, поэтому, если вы передадите "общий" принципал поисковику, вы должны вернуть и пользователей, и группы (и компьютеры).

Единственная сложность заключается в том, что Principal является абстрактным классом, поэтому вы не можете напрямую создать его экземпляр - вам нужно сначала получить UserPrincipal и "извлечь" обобщенный Principal из этого:

// set up dummy UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);

// get the generic Principal from that - set the "Name" to search for
Principal userOrGroup = qbeUser as Principal;
userOrGroup.Name = "SomeName";

// create a PrincipalSearcher based on that generic principal
PrincipalSearcher searcher = new PrincipalSearcher(userOrGroup);

// enumerate the results - you need to check what kind of principal you get back
foreach (Principal found in searcher.FindAll())
{
    // is it a UserPrincipal - do what you need to do with that...
    if (found is UserPrincipal)
    {
        ......
    }
    else if (found is GroupPrincipal)
    {
        // if it's a group - do whatever you need to do with a group....
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...