Не получить все группы при поиске по OU в Active Directory - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь получить все имена групп в Active Directory.Группа должна быть отфильтрована по имени подразделения.Существует также возможность получить все группы без фильтрации OU.Выборка всех групп дает более 20 групп.Но когда я пытаюсь получить группы по имени подразделения, немногие из групп показывают (6 групп) из разных подразделений.

Я пробовал DirectorySearcher с фильтром, но не смог получить все группы.

DirectoryEntry root = null;
                if (ou == "")
                {
                    // This is giving all groups
                    root = new DirectoryEntry("LDAP://RootDSE");
                    root = new DirectoryEntry("LDAP://" + root.Properties["defaultNamingContext"][0]);
                }
                else
                {
                    // When passed 1 by 1 OU name, few of the groups are showing
                    string cName = getExactDomainName(domain);
                    root = new DirectoryEntry("LDAP://OU=" + ou + "," + cName);
                }


Нужен запрос фильтра поиска, чтобы дать всем группам имя OU.

РЕДАКТИРОВАТЬ:1. Я извлекаю все подразделения в определенном домене и показываю их в окне контрольного списка.2. Пользователь может проверить одну или несколько групп из поля контрольного списка.В зависимости от проверенных групп и выбранного OU (на 1-м шаге) будут отображаться пользователи.Фильтр выглядит следующим образом:

var search = new DirectorySearcher(new DirectoryEntry())
{
    search.Filter = "(&(objectCategory=user)(memberOf=cn=" + groupName + ",ou=" + OUName + ",dc=dev,dc=local))";
};

Теперь проблема в том, что когда на первом шаге не выбрано OU, появляются 20 групп.Но, когда OU выбран 1 на 1, общее количество групп не 20. Я думаю, я возиться с фильтром запроса.Мне просто нужна опция, когда пользователь выберет OU, тогда все группы будут показаны пользователю.Пользователь теперь проверит группы, и будут выбраны все пользователи в этой группе (ах) и OU.

1 Ответ

0 голосов
/ 08 мая 2019

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

Вероятно, причина состоит в том, что не все группы находятся в подразделении.Вы либо:

  1. имеете группы в корне домена (например, CN=Group1,dc=dev,dc=local), либо
  2. имеете группы в контейнерах (objectClass=container),которые похожи на OUs, но нет.Действительно, единственная разница между подразделениями и контейнерами заключается в том, что к подразделениям могут применяться групповые политики, а к контейнерам - нет.Когда вы соберете все имена подразделений, если вы действительно ищете только подразделения (objectClass=organizationalUnit), вы пропустите контейнеры и группы внутри.Новый домен поставляется с несколькими контейнерами по умолчанию, такими как Users, Computers, System и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...