Збережені запити (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 в домені |