Запросы LDAP ограничиваются просмотром атрибутов самого объекта. Поэтому иногда, если я не уверен, что можно запросить, я буду использовать AD Users and Computers, открывать свойства объекта (например, OU в данном случае) и заглядывать на вкладку Attribute Editor, чтобы увидеть, какие атрибуты и значения там, что я могу искать.
Если вы сделаете это для OU, вы увидите, что нет никаких атрибутов, которые бы указывали вам тип объектов в OU.
Таким образом, краткий ответ на ваш вопрос заключается в том, что вы не можете искать подразделения, контейнеры и группы, которые содержат только компьютерные объекты.
Сначала вам нужно будет найти все OU, контейнеры и группы с запросом типа:
(|(objectClass=organizationalUnit)(objectClass=container)(objectClass=group))
, а затем выполните отдельный поиск, чтобы определить, содержат ли они компьютерные объекты.
Если вы используете DirectorySearcher
, вы можете установить для SearchRoot
значение OU для поиска только одного OU. Тогда вы будете искать (objectClass=computer)
, чтобы найти внутри компьютерные объекты. Вы также можете установить SearchScope
на OneLevel
, чтобы найти только объекты, которые являются прямыми потомками этого подразделения.
Для групп вы можете выполнить поиск домена для членов компьютера этой группы, используя:
(&(memberOf=groupDN)(objectClass=computer))
, где groupDN
- это distinguishedName
группы.