Пошук заблокованих, відключених і неактивних об'єктів в AD за допомогою Search-ADAccount

Задоволеною частою завданням, яку доводиться виконувати адміністратору Active Directory, є формування списків відключених або неактивних облікових записів і комп'ютерів, або списків учеток з простроченими паролями. Для цього можна використовувати як збережені LDAP запити в консолі ADUC, так і вже знайомі нам командлети PowerShell Get-ADUser, Get-ADObject або Get-ADComputer, однак створення правильного фільтра для даних команд може викликати певні труднощі. На щастя в модулі PowerShell для ActiveDirectory є більш зручний командлет для виконання таких завдань - Search-ADAccount. Розглянемо приклади використання командлет Search-ADAccount для типових задач.

Отже, для роботи команд літа Search-ADAccount необхідно, щоб на комп'ютері був встановлений як мінімум PowerShell 3.0, набір Remote Server Administration Toolkit (RSAT), В якому повинен бути включити компонент Active Directory Module for Windows PowerShell (Control Panel -> Programs-> Turn Windows Features on and off-> Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools).

Даний компонент також може бути включений командою:

Add-WindowsFeature RSAT-AD-PowerShell

Запустіть консоль PowerShell і імпортуйте модуль Active Directory для PowerShell:

Import-Module ActiveDirectory

Перерахуємо список найбільш цікавих для нас ключів командлет Search-ADAccount

Ключ Search-ADAccountопис
-AccountDisabled

Пошук відключених облікових записів
-AccountExpired

Облікові записи з простроченим терміном дії
-AccountExpiring [-DateTime DateTime] [-TimeSpan TimeSpan]

Облікові записи які прострочать протягом певного періоду (-TimeSpan) або в певну дату (-DateTime)
-AccountInactive [-DateTime DateTime] [-TimeSpan TimeSpan]

Облікові записи, які не регістровавшіеся в домені починаючи з певної дати (-DateTime) або протягом певного періоду часу (-TimeSpan)

-LockedOutОблікові записи, заблоковані пральний політикою
-PasswordExpiredОблікові записи, пароль яких прострочений
-PasswordNeverExpires

Облікові записи, у яких встановлено атрибут PasswordNeverExpires
Примітка. Відзначимо, що за замовчуванням командлет Search-ADAccount виконує пошук по користувачем і комп'ютерів одночасно. Щоб шукати тільки по користувачам або комп'ютерів, потрібно використовувати ключ ComputersOnly або UsersOnly відповідно.

Наприклад, виведемо список відключених облікових записів у всьому домені:

Search-ADAccount -UsersOnly -AccountDisabled

Обмежити область пошуку певним контейнером (OU) Active Directory можна так:

Search-ADAccount -UsersOnly -AccountDisabled -searchbase "OU = Admins, OU = Accounts, DC = winitpro, DC = loc"

Ці ж дані можна представити в більш зручному табличному вигляді за допомогою команди:

Search-ADAccount -UsersOnly -AccountDisabled -searchbase "OU = Admins, OU = Accounts, DC = winitpro, DC = loc" | ft -AutoSize

Або, якщо потрібно отримати список заблокованих користувачів, що містить тільки певні атрибути користувачів і представити у вигляді графічної таблиці з можливістю сортування, виконайте:

Search-ADAccount -UsersOnly AccountDisabled | sort LastLogonDate | Select Name, LastLogonDate, DistinguishedName | out-gridview -title "Disabled Users"

Список заблокованих облікових записів користувачів:

Search-ADAccount -UsersOnly -LockedOut

Список облікових записів користувачів, неактивних протягом 60 днів:

$ Timespan = New-Timespan -Days 60
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $ timespan

Щоб порахувати кількість таких учеток:

Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $ timespan | Measure

Список комп'ютерів, що не реєструвалися в мережі протягом останніх 90 днів.

Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 90

Або з певної дати:

Search-ADAccount -AccountInactive -ComputersOnly -DateTime '1/1/2017' | Select Name, LastLogonDate | ft

Для вивантаження даних в CSV скористайтеся такою командою:

Search-ADAccount -AccountDisabled -UsersOnly | Export-Csv "c: \ ps \ disabled_users.csv"