2016-03-31 4 views
2

Мне нужно получить информацию о конкретной группе Active Directory. Я использую этот код:Получить имена пользователей группы Active Directory в C#

var result = grpResponse.Entries[0]; 

if (result.Attributes["member"] != null) 
{ 
    for (var i = 0; i < result.Attributes["member"].Count; i++) 
    { 
      var filter = result.Attributes["member"][i].ToString(); 

      var query = "(&(objectClass=user)(" + filter + "))"; // Here I need username to use like cn=username 

      var userRequest = new SearchRequest(distinguishedName, query, 
            SearchScope.Subtree); 

В фильтре я получаю что-то вроде

CN=Name,OU=something,DC=example 

Как я могу принять это значение сп т.е. имя пользователя в покое?

ответ

1

Если вы используете .NET 3.5 и выше, вы должны проверить пространство имен (S.DS.AM).

В принципе, вы можете определить контекст домена и легко найти пользователей и/или групп в AD:

// set up domain context - limit to the OU you're interested in 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, "OU=YourOU,DC=YourCompany,DC=Com")) 
{ 
    // find the group in question 
    GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere"); 

    // if found.... 
    if (group != null) 
    { 
     // iterate over the group's members 
     foreach (Principal p in group.GetMembers()) 
     { 
      Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName); 

      // do whatever else you need to do to those members 
     } 
    } 
} 

Новый S.DS.AM делает его очень легко играть с пользователями и группами в AD !

Подробнее об этом здесь:

0

Ниже именно то, что мне было нужно.

OuString вы используете, как у нас, возможно, имеет несколько частей - как OU & DC

bstring OUString = "OU=Groups,OU=Accounts,DC=nw,DC=nos,DC=ourcompanyName,DC=com" ; 

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, OUString)) 
Смежные вопросы