Сохраненные запросы (Saved Queries) в mmc консоли Active Directory Users and Computers (ADUC) позволяют создавать различные LDAP фильтры для выборки объектов Active Directory.Такие запросы можно сохранять, редактировать и переносить между компьютерами. С помощью сохраненных запросов можно быстро и эффективно решать задачи поиска и выборки объектов в AD по различным критериям. Saved Queries помогают администратору быстро выполнять типовые задачи администрирования объектов AD: вывести список всех отключенных учетных записей в домене, выбрать всех пользователей определенной организации с ящиками на заданном сервере Exchange и т.п.
При использовании сохраненных LDAP запросов администратор может выполнять групповые операции с объектами из разных OU (контейнеров) Active Directory. Например, можно выполнить массовую блокировку/разблокировку, перемещение, удаление учетных записей, переименование и т.п. Такие запросы в консоли ADUC позволяют обойти иерархическую структуру OU в Active Directory и собрать все нужные объекты в плоском табличном виде.
Как создать сохраненный запрос в консоли Active Directory?
Рассмотрим несколько примеров использования сохраненных запросов в консоли Active Directory Users and Computers для поиска объектов. Предположим, вам нужно получить список активных (незаблокированных) учетных записей пользователей, их email адресов и названий отделов.
- Запустите консоль ADUC (dsa.msc), выберите раздел Saved Queries, щелкните по нему правой кнопкой и выберите New – > Query;
- В поле Name укажите имя сохраненного запроса, которое будет отображаться в консоли ADUC;
- В поле Query root можно выбрать контейнер (OU), в котором выполняется запрос. По умолчанию поиск выполняется по всему домену AD. В нашем примере, мы сузим область поиска, выбрав контейнер Ekaterinburg;
- Далее нажмите на кнопку Define Query, и в выпадающем списке Find выберите пункт Custom Search;
- Перейдите на вкладку Advanced и в поле Enter LDAP query скопируйте следующий LDAP-запрос (этот запрос выбирает незаблокированных пользователей, другие примеры LDAP запросов смотрите чуть ниже):
(&(objectcategory=person)(objectclass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))
- Сохраните изменения, нажав OK;
- Теперь в консоли Active Directory выберите созданный запрос, нажмите F5 для перестроения списка. В результате в правом окне появится список пользователей, который соответствует данному LDAP запросу;
- Чтобы показать в консоли Active Directory дополнительные атрибуты пользователей (email-адрес, отдел), откройте меню View -> Add/Remove Columns;
- Добавьте нужные столбцы;
- Мы добавили 3 дополнительных поля: User Logon Name, E-Mail Address, Department.
- Полученный список пользователей можно выгрузить в CSV или TXT файл для дальнейшего анализа и импорта в Excel. Для этого щелкните правой кнопкой по сохраненному запросу и выберите пункт меню Export List;
Вы можете создать и сохранить в вашей консоли ADUC множество различных сохраненных запросов, которые можно организовать в древовидную структуру. Таким образом вы может создать удобную подборку запросов, позволяющих быстро выполнять типовые задачи администрирования AD.
Также можно получать данные из AD с помощью PowerShell и сохранять их непосредственно в файл Excel.
В оснастке поддерживается несколько режимов формирования сохраненных запросов AD. Не обязательно указывать текст LDAP фильтра вручную. Выможете сформировать сфой запрос с помощью простого графического мастера. Просто выбираете различные атрибуты объектов AD и используйте для поиска по нужным критериям. Например, чтобы вывести список компьютеров с Windows Server в домене, выберите:
- Find -> Computers;
- Вкладка Advanced;
- Fields -> Operating System
- Stars with -> указываете
Windows Server *
В качестве символа подстановки используется.*
(можно указать так*Server*
). Можно добавить несколько критериев поиска.
Сохраните запрос и обновите его в консоли ADUC. В списке будут показаны все Windows Server в вашем домене.
Сохраненные запросы хранятся локально на компьютере, на котором они были созданы. Xml-файл с настройками находится здесь C:\Users\%USERNAME%\AppData\Roaming\Microsoft\MMC\DSA). Для переноса сохранённых запросов между компьютерами, в консоли dsa.msc есть функция экспорта (Export Query Definition) и импорта (Import Query Definition) запросов через XML файлы.
Полезные сохраненные LDAP запросы для MMC консоли Active Directory
В следующей табличке собраны примеры часто используемых LDAP запросов для выборки объектов Active Directory. Вы можете сохранить их в своей консоли ADUC для ежедневного использования.
Сохраненный запрос ADUC | LDAP фильтр |
Поиск групп с ключевым словом admin в имени |
(objectcategory=group)(samaccountname=*admin*)
|
Поиск учетных записей с ключевым словом service в поле description |
(objectcategory=person)(description=*service*)
|
Пустые группы Active Directory (в которых нет пользователей) |
(objectCategory=group)(!member=*)
|
Пользователи, у которых в настройках указано “Пароль никогда не истекает” |
(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536)
|
Пользователи, которые не меняли пароль более 3 месяцев |
(&(sAMAccountType=805306368)(pwdLastSet<=132161330597286610))
|
Найти пользователей, у которых в поле отдел указано “Отдел продаж”
|
(&(objectCategory=person)(objectClass=user)(department=*Отдел продаж*))
|
Пользователи с незаполненным полем Profile Path |
(objectcategory=person)(!profilepath=*)
|
Активные учетные записи пользователи, у которых истек срок действия пароля |
(objectCategory=person)(objectClass=user)(pwdLastSet=0)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
|
Все пользователи AD, кроме отключенных |
(objectCategory=person)(objectClass=user)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
|
Заблокированные пользователи AD |
(objectCategory=person)(objectClass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=16)
|
Пользователи с email адресами |
(objectcategory=person)(mail=*)
|
Пользователи без email адресов |
(objectcategory=person)(!mail=*)
|
Пользователи, скрытые из адресной книги Exchange (GAL): |
(&(sAMAccountType=805306368)(msExchHideFromAddressLists=TRUE))
|
Список учетных записей, никогда не регистрировавшихся в домене (информацию о времени входе в домен в более удобном виде можно просматривать с помощью вкладки Additional Account Info) |
(&(objectCategory=person)(objectClass=user)(|(lastLogonTimestamp=0)(!(lastLogonTimestamp=*)))
|
Учетные записи пользователи, созданных в определенный период времени (за 2019год) |
(&(&(objectCategory=user)(whenCreated>=20190101000000.0Z&<=20200101000000.0Z&)))
|
Пользователи AD, созданные в этом году |
(&(&(&(objectClass=User)(whenCreated>=20200101000000.0Z))))
|
Все компьютеры с Windows 10 |
(&(objectCategory=computer)(operatingSystem=Windows 10*))
|
Вывести все компьютеры с определенным билдом Windows 10 (например, 1909 – это билд 18363) |
(&(&(objectCategory=computer)(operatingSystem=Windows 10*)(operatingSystemVersion=*18363*)))
|
Найти все Windows Server 2016 кроме контролеров домена |
(&(&(objectCategory=computer)(!(primaryGroupId=516)))(operatingSystem=Windows Server 2016*))
|
Все SQL серверы: |
(&(objectCategory=computer)(servicePrincipalName=MSSQLSvc*))
|
Все группы рассылки Exchange |
(&(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))
|
Поиск Query Based Distribution Groups в домене | |
Найти объект AD с определенным SID |
(objectSID=S-1-5-21-71234583-152049171
|
Использование LDAP фильтров в PowerShell
Вы можете использовать рассмотренные LDAP фильтры для поиска объектов в консоли PowerShell. В большинстве командлетов из модуля PowerShell для Active Directory есть специальный параметре LdapFilter. В этом параметре нужно указывать код LDAP запроса.
Например,
Get-ADUser -LdapFilter "(&(objectCategory=person)(objectClass=user)(department=*Отдел продаж*))"| ft -a DisplayName,department
Командлеты
Get-ADUser
,
Get-ADComputer
,
Get-ADGroup
являются специализированными и используются для поиска объектов определенного типа – пользователей, компьютеров или групп. Если вы не знаете тип объекта AD, который вам нужен, или вам нужна информация о всех типах объектов, используйте более универсальный командлет
Get-ADObject
. Например, для поиска объекта по SID:
Get-ADObject -LdapFilter "(objectSID=S-1-5-21-71234583-15204917-8654222215-1231)" -Properties * -SearchBase “OU=MSK,DC=winitpro,DC=ru| ft -a DisplayName,Title