Не получить все группы при поиске по OU в Active Directory

Я пытаюсь получить все имена групп в 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 ответ

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

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

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