Поиск объектов в Active Directory по маске (группы, пользователи и компьютеры)

Для задач поиска определенных объектов в Active Directory доступны несколько встроенных инструментов, включая графически оснастки, а также утилиты командной строки и командлеты PowerShell. В этой статье мы рассмотрим, как выполнить поиск различных типов объектов в домене Active Directory (пользователей, компьютеров, групп, организационных подразделений) с помощью простых и более сложных LDAP фильтров, включая поиск по определенной маске (шаблону) или сразу по нескольким критериям.

Задача поиска объектов в Active Directory (пользователей, групп или компьютеров) по имени с помощью некого шаблона, регулярного выражения или маске не так очевидна, как кажется на самом деле. Дело в том, что по-умолчанию графическая консоль ADUC (Active Directory Users and Computers), не позволяет использовать стандартный подстановочный символ звездочка (*) в начале или середине поисковой фразы.

Например, вы хотите найти в Active Directory все группы, в имени которых содержится ключевое слово « SQL" . Если открыть консоль поиска (Find User, Contacts, and Groups) в ADUC и выполнить обычный поиск по ключевому слову SQL , то результаты скорее всего вас не устроят. Консоль ADUC выведет только группы и пользователей, у которых указанное ключевое слово содержится в начале имени. Остальные объекты со словом sql не будут найдены. Поиск по маске *sql* также не даст результатов (подстановочные символы просто не работают).

поиск объектов в AD по ключевым словам

Пользователи Windows 10 и 11 могут выполнять поиск в AD прямо со своих компьютеров без установки оснастки ADUC. Чтобы открыть окно поиска, нужно просто выполнить команду:

rundll32.exe dsquery,OpenQueryWindow

Окно поиска в домене AD в Windows 11 без установки консоли ADUC

Как найти пользователя и группу Active Directory из консоли ADUC?

Для поиска объектов в AD по определенной маске из графической консоли Active Directory Users and Computers ( dsa.msc ) можно воспользоваться простыми LDAP запросами.

  1. Для этого, откройте меню Find и в выпадающем списке типов поиска выберите Custom Search;
  2. Переключитесь на вкладку Advanced;
  3. В поле LDAP query, введите: name=*sql*
    Примечание. Такой LDAP запрос указывает что нужно найти все объекты AD, содержащие в имени значение sql. Для этого нужно воспользоваться символом подстановки * с обеих сторон.
    ldap запросы для поиска в Active Directory из консоли dsa.msc

Как вы видите, по данному шаблону было найдено множество объектов AD (группы, компьютеры, пользователи, сервисные gMSA аккаунты).

Если нужно искать только объекты AD определенного типа, укажите его в значении objectcategory . Например, чтобы найти объекты типа группа, используйте такой LDAP запрос:

(&(objectcategory=group)(name=*sql*))

Если включить опцию Filter в меню View, можно воспользоваться возможностью расширенной фильтрации в консоли поиска AD.

фильтры поиск в Active Directory

С помощью пункта меню View -> Choose Columns вы можете добавить дополнительные атрибуты объектов AD, по которым можно фильтровать найденные объекты.

Если вы часто используете определенные запросы для поиска в Active Directory, то чтобы каждый раз не набирать LDAP запросы вручную, их можно сохранить в разделе Saved Queries (сохраненные LDAP запросы в консоли Active Directory).

Сохраненные поисковые запросы в консоли Active Directory

Более сложный LDAP запрос – найти всех пользователей в AD, у которых не заполнен email адрес (пустое значение):

(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!mail=*) )​​

Подробнее про синтаксис LDAP фильтров можно почитать в справке.

Если вы используете для поиска консоль Active Directory Administrative Center ( dsac.exe ), в ней также можно использовать шаблоны LDAP для поиска. Выберите Global Search и переключитесь в режим Convert to LDAP. Введите запрос в поле LDAP query.

LDAP запросы в консоли Active Directory Administrative Center

Поиск компьютеров в Active Directory

Для поиска компьютеров и серверов в Active Directory по точному вхождению нужно сначала в выпадающем списке Find выбрать тип объекта Computers и затем можно в поисковое поле указать имя компьютера.

поиск по ключам в именах компьютеров AD

Если нужно найти компьютеры в AD по маске, нужно использовать такой LDAP запрос в разделе Custom Search -> Advanced.

(&(objectcategory=computer)(name=*sql*))

Поиск объектов в Active Directory с помощью PowerShell

Для поиска объектов в AD из командной строки, можно воспользоваться модулем PowerShell для ActiveDirectory.

Для поиска в Active Directory определенного типа объекта можно использовать соответствующий командлет:

Для поиска групп в AD по шаблону, можно воспользоваться такой командой PowerShell:

Get-ADGroup -Filter {name -like "*sql*"} -Properties Description,info | Select Name,samaccountname,Description,info | Sort Name

поиск группы в AD с помощью PowerShell

Аналогично можно выполнить поиск по имени пользователя или компьютера. Ниже примеры двух таких команд. Дополнительно во втором команде мы добавили несколько критериев поиска и ограничили область поиска определенным организационным подразделением (OU) с помощью параметра SearchBase:

Get-ADUser -Filter {name -like "*sql*"}
Get-ADComputer 'Enabled -eq $true -and OperatingSystem -like "*Server*" -and Name -like "*sql*"' -SearchBase "OU=HQ,DC=winitpro,DC=ru"

Если вы не знаете точно какой тип объекта вы ищите, можно выполнить универсальный поиск по всем типам объектам AD, используя командлет Get-ADObject:

Get-ADObject -Filter {name -like "*sql*"} –Properties * | select sAMAccountName, ObjectClass, userPrincipalName, DisplayName, Description | FT

Как вы видите, команда вывела все типа объектов в AD ( ObjectClass : computer, user, group, msDS-GroupManagedServiceAccount).

Get-ADObject поиск любых объектов в Active Directory из консоли powershell

Выполнить поиск только среди объектов типа Контакт в домене:

Get-ADObject -Filter 'ObjectClass -eq "contact" -and Name -like "*sql*"'

Можно использовать LDAP фильтр непосредственно в команде Get-ADObject:

Get-ADObject -LdapFilter "(&(objectCategory=person)(objectClass=user)(cn=*sql*))"

Специальный командлет Search-ADAccount можно использовать для поиска отключенных, неактивных пользователей или компьютеров.

Если вам нужно найти все сервисные аккаунты AD (Managed Service Account и group MSA), используйте команду:

Get-ADServiceAccount -Filter {name -like "*sql*"}

Для поиска по имени организационного подразделения используйте командлет:

Get-ADOrganizationalUnit -Filter "Name -like '*Computers*'"

Модуль Active Directory для PowerShell установлен по умолчанию на контроллерах домена, а на клиентские станции его нужно ставить отдельно. В некоторых случаях, когда вы не можете установить этот модуль на рабочую станцию, но нужно выполнить поиск (например, в PowerShell логон скрипте групповой политикик), можно воспользоваться таким синтаксисом:

$searchuser="*sql*"
([adsisearcher]"(&(objectCategory=person)(objectClass=user)(displayname=$searchuser))").FindAll() |
ForEach-Object { $_.Properties.displayname }

Надеюсь, эти простые способы облегчат вам задачу поиска объектов в Active Directory.


Предыдущая статья Следующая статья


Комментариев: 15 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)