Збережені LDAP запити в консолі Active Directory User and Computers

Збережені запити (Saved Queries) в консолі Active Directory Users and Computers (ADUC) дозволяють створювати прості і складні LDAP запити по вибірці об'єктів Active Directory. Ці запити можна зберігати, редагувати і переносити між комп'ютерами. За допомогою збережених запитів можна швидко і ефективно вирішувати завдання пошуку і вибірки об'єктів в AD за різними критеріями. Saved Queries, наприклад, допоможуть швидко: вивести список всіх відключених облікових записів в домені, вибрати всіх користувачів певної організації з ящиками на заданому сервері Exchange і т.п.

Важлива перевага збережених LDAP запитів - надання можливості виконувати групові операції з об'єктами з різних OU (контейнерів) Active Directory, наприклад масова блокування / розблокування, переміщення, видалення облікових записів і т.п. Тобто дозволяють "позбутися" від недоліків ієрархічної структури OU в Active Directory, зібравши всі потрібні об'єкти в плоскому табличному вигляді.

Більшість зазначених операцій можна виконати за допомогою PowerShell, dsquery, скриптів vbs і т.д., але, як правило, представлення результатів у звичному графічному вигляді консолі набагато зручніше і не вимагає особливих навичок.

Active Directory Saved Queries вперше з'явилися в Windows Server 2003 і продовжують підтримуватися в усіх наступних версіях Windows Server

Покажемо типовий приклад використання збережених запитів в консолі 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-запит:
(& (Objectcategory = person) (objectclass = user) (! UserAccountControl: 1.2.840.113556.1.4.803: = 2))

Зберігаємо зміни, натиснувши OK.

Вибираємо в консолі ADUC створений запит, натискаємо F5 для перестроювання списку. Результат роботи запиту видно на скріншоті.

Щоб відобразити додаткові поля (email-адреса, відділ), в консолі ADUC відкриваємо меню View і вибираємо пункт Add / Remove Columns.

Додаємо потрібні поля.

Ми додали 3 додаткових поля: User Logon Name, E-Mail Address, Department.

Отриманий результат можна вивантажити в CSV або TXT форматі для подальшого аналізу і використання в табличному реакторі Excel. Для цього клацаємо ПКМ по збереженому запитом і вибираємо пункт меню Export List.

В консолі ADUC можна створити безліч різних збережених запитів, які можна організувати в деревоподібну структуру.

Порада. У деяких випадках зручніше безпосередньо з Exсel звертатися до об'єктів Active Directory. Як це реалізувати описано в статті Виконання запитів Active Directory з Excel.

Збережені запити зберігаються локально в консолі на комп'ютері, на якому вони були створені (xml-файл з настройками знаходиться тут C: \ Users \% USERNAME% \ AppData \ Roaming \ Microsoft \ MMC \ DSA). Для перенесення збереженого запиту між комп'ютерами, в консолі dsa.msc є функція Імпорту / Експорту запитів через XML файли.

У наступній табличці ми наведемо приклади часто використовуваних LDAP запитів для вибірки в Active Directory.

завдання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)
Користувачі з незаповненим полем 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 = *)
Комп'ютери без Windows XP SP3(& (ObjectCategory = computer) (operatingSystem = Windows XP Professional) (operatingSystemServicePack = Service Pack 3))
Список облікових записів, ніколи не реєструвалися в домені (інформацію про час вході в домен в більш зручному вигляді можна переглядати за допомогою вкладки Additional Account Info)(& (& (ObjectCategory = person) (objectClass = user)) (| (lastLogon = 0) (! (LastLogon = *))))
Облікові записи користувачів, створених в певний період часу (за 2014 рік)(& (& (ObjectCategory = user) (whenCreated> = 20140101000000.0Z &<=20150101000000.0Z&)))
Користувачі AD, створені в цьому році(& (& (& (ObjectClass = User) (whenCreated> = 20150101000000.0Z))))
Пошук Query Based Distribution Groups в домені