2014-11-17 3 views
6

Мне нужно написать сценарий C#, который возвращает все группы Active Directory с именами групп, которые начинаются с определенного имени. Я знаю, что может вернуть одну группу, используя следующий код.Найти группы Active Directory, где имя группы, например

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

Однако, мне нужны все группы, в которых начинается имя Groupname, например «GroupPrefix». Затем я хочу пройти все эти группы, используя следующий код и сохранить «члены» в массиве/списке, который я могу использовать позже для поиска.

foreach (UserPrincipal p in grp.GetMembers(true)) 

Я бы очень признателен за любую помощь, которую я могу получить с этим.

ответ

6

Вы можете использовать PrincipalSearcher и «запрос по образцу» принципал сделать ваш поиск:

// create your domain context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // define a "query-by-example" principal - here, we search for a GroupPrincipal 
    // and with the name like some pattern 
    GroupPrincipal qbeGroup = new GroupPrincipal(ctx); 
    qbeGroup.Name = "GroupPrefix*"; 

    // create your principal searcher passing in the QBE principal  
    PrincipalSearcher srch = new PrincipalSearcher(qbeGroup); 

    // find all matches 
    foreach(var found in srch.FindAll()) 
    { 
     // do whatever here - "found" is of type "Principal" 
    } 
} 

Если вы еще не - абсолютно читать статью MSDN Managing Directory Security Principals in the .NET Framework 3.5, который показывает хорошо, как сделать лучшее использование новых функций в System.DirectoryServices.AccountManagement. Или см. Пространство имен MSDN documentation on the System.DirectoryServices.AccountManagement.

Конечно, в зависимости от ваших потребностей, вы можете указать другие свойства на том, что «запрос по образцу» группа принципал вы создаете:

  • DisplayName (обычно: первое имя + пробел + фамилия)
  • SAM Account Name - ваш Windows/AD имя учетной записи

Вы можете указать любой из свойств на GroupPrincipal и использовать их в качестве «запрос по образцу» для вашего PrincipalSearcher.

+1

Ссылка на журнал мертва. – TernaryTopiary

+0

Да, первая ссылка мертва –

Смежные вопросы