Администратору домена Active Directory часто приходиться иметь дело с различными запросами, например, необходимо найти все отключенные учетные записи компьютеров или всех сотрудников какого-то департамента, или все глобальные группы. Некоторые администраторы сразу думают о каких-то скриптах на Powershell или VBS, забывая при этом, что все это можно сделать прямо в оснастке Active Directory Users and Computers (ADUC) с помощью запросов LDAP, которые к тому же можно удобно там же в консоли и сохранить, а при необходимости еще и выгрузить в файл XML и перенести на другой компьютер. Напомню, что такое LDAP – это сокращение от Lightweight Directory Access Protocol, то есть это облегченный протокол доступа к каталогу. Подробней узнать о нем можно, например, в википедии. Советую обратить особое внимание на синтаксис и логические операторы.
Сохраненные запросы LDAP (Saved Queries) впервые появились еще в Windows 2003 и продолжают оставаться и в текущих версиях Windows. Основное их преимущество в том, что для их использования не требуется программирования, все работа происходит во всем хорошо знакомой консоли Active Directory Users and Computers. С результатом запроса можно производить массовые операции типичные для ADUC, например, перенос, удаление, отключение, добавление в группы и так далее. Возможно формировать как простые запросы, используя типовые настройки, так и сложные с помощью редактора на вкладке “Advanced”, тем самым достигается гибкость без использования сложных скриптов.
Использование сохраненных запросов LDAP (Saved Queries) в оснастке Active Directory Users and Computers
Чтобы воспользоваться запросами, запустите оснастку (snap-in) Active Directory Users and Computers.
Работа с LDAP запросами по группам Active Directory
Допустим, что вам нужно найти все пустые группы в домене или каком-то OU (organizational unit). Создайте новую папку, например, “Запросы по группам”. В ней вы будете хранить все ваши новые запросы по группам.
Создайте новый LDAP запрос.
Допустим, что вам нужно искать только в OU Test. Для составления самого LDAP запроса нажмите “Define Query…”.
Для использования пользовательского поиска выберите в выпадающем списке “Custom Search”.
Далее нажмите “Field”, затем “Group” и далее “Members”.
Выберите условие “Not present”.
Результат нашего запроса.
Немного изменив запрос на вкладке “Advanced” в поле “Enter LDAP query:”, можно найти пустые группы какого-то определенного типа, например, глобальные.
Работа с LDAP запросами по учетным записям Active Directory
Далее рассмотрим использование запросов для поиска учетных записей пользователей. Например, найдем все отключенные учетные записи.
Задайте название и описание для нового запроса.
Нажмите “Define Query…”. Выберите “Common Queries”, “Disabled accounts”.
Сохраните ваш запрос – нажмите “OK”.
Результаты нашего запроса.
Результаты запроса при необходимости можно сохранить в файл CSV.
Выберите, куда сохранить файл.
В дальнейшем при использовании сохраненных запросов для получения свежих данных нужно в контекстном меню запроса выбрать “Refresh” или нажать кнопку F5.
Экспорт и импорт определений LDAP запросов
Сохраненные запросы хранятся локально на том компьютере, где они создавались. Файл XML с настройками хранится в профиле пользователя, из под которого запускалась оснастка. Имейте это ввиду при смене компьютера или удалении профиля. Нужно заранее сделать копию этой папки или воспользоваться предусмотренным в консоли механизмом экспорта, импорта, описанным ниже.
Для экспорта определения запроса в контекстном меню выберите “Export Query Definition…”.
Сохраните в файл XML.
Для импорта определения запроса в контекстном меню выберите “Import Query Definition…”.
Примеры LDAP запросов
- Все пользователи, созданные после 2015 года – (&(&(&(objectClass=User)(whenCreated>=20160101000000.0Z))))
- Пользователи из отдела маркетинга – (&(objectCategory=person)(objectClass=user)(department=Маркетинг))
- Все компьютеры Windows 7/2008 R2 – (&(objectCategory=computer)(operatingSystemVersion=6.1*))
- Группы с ключевым словом “доступ” в имени – (objectCategory=group)(samaccountname=*доступ*)
Неплохая статья. На счет экспорта-импорта определений запросов это вы хорошо напомнили. Напоролся уже один раз – потерял все свои наработки, когда винду переставлял.