2015-03-04 2 views
0

Мы используем DirectoryEntry для получения сведений о членстве в группе. Свойство memberOf содержит cn членов группы. Однако наш домен заполнен группами, где cn отличается от sAMAccountName.Извлечь AD sAMAccountNames из свойства memberOf

Мне нужно получить список sAMAccountNames членов группы (включая рекурсию через членство в группах, которые являются членами и т. Д.). Прямо сейчас я просматриваю свойство memberOf, сохраняю cn, а затем делаю второй запрос LDAP, чтобы получить sAMAccountNames объектов с этими cns.

Есть ли лучший способ достичь этого?

ответ

1

Я не знаю, как вы получаете CN, но когда мне нужно SamAccountNames из группы, я обычно пишу что-то вроде этого,

var samNames = new List<string>(); 
using (var group = GroupPrincipal.FindByIndentity(principalContext, "GroupName")) 
{ 
    if (group != null) 
    { 
     var users = group.GetMembers(true); 
     foreach (UserPrincipal user in users) 
     { 
      samNames.add(user.SamAccountName); 
     } 
    } 
} 
+0

в настоящее время код использует DirectoryEntry сделать наш поиск. Я собираюсь переписать его, чтобы просто использовать GroupPrincipal так же, как и вы. Это должно быть намного лучше. – hsimah