LDAP-запрос, чтобы найти все компьютеры в группах безопасности - PullRequest
1 голос
/ 04 ноября 2011

Вот что я пытаюсь:

public List<string> GetUsersInGroup(string domain, string group)
{
   List<string> groupMemebers = new List<string>();    
   DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain);                
   DirectorySearcher groupSearch = new DirectorySearcher(entry);
   groupSearch.Filter = "(&(objectclass=group)(samaccountname=" + group +"))";
   groupSearch.PropertiesToLoad.Add("DistinguishedName");
   SearchResult srG = groupSearch.FindOne();    
   String DN = srG.Properties["DistinguishedName"][0].ToString();    
   entry.RefreshCache(new string[] { "memberOf" });    
   DirectorySearcher mySearcher = new DirectorySearcher(entry);
   mySearcher.Filter = "(|(&(objectClass=computer)(memberOf=" + DN + "))(&(objectClass=User)(memberOf=" + DN + ")))";

   SearchResultCollection srcg = mySearcher.FindAll();

   foreach (SearchResult resEnt in srcg)
   {
       groupMemebers.Add(resEnt.GetDirectoryEntry().Name.ToString());
   }

   return groupMemebers;
}

Edit:

Хорошо, что ПОЛЬЗОВАТЕЛИ входят в группу, но я могу получить Компьютеры (memberOF) из группы , если группа "Доменные компьютеры" или "Контроллеры домена" (основные группы!).

Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 04 ноября 2011

Основная группа объекта (пользователя или компьютера) в AD хранится в свойстве с именем «primaryGroupID».Например, для пользователей это, как правило, 513. Это означает, что основной группой является «Пользователи домена».

Встроенные группы (пользователи домена, компьютеры домена и т. Д.) Имеют много членов и сохраняют членство вобычный путь через свойство "member" может вызвать проблемы с производительностью.Вот почему вы не видите «Доменные компьютеры» в свойстве memberof.

По сути, если вы хотите найти компьютеры, которые являются членами «Доменных компьютеров», вы должны выполнить запрос

* 1006.*

Проверка Как использовать атрибут PrimaryGroupID для поиска основной группы для пользователя - это относится и к компьютерам.

Также проверьте Известные идентификаторы безопасности в Windowsоперационные системы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...