Довольной частой задачей, которую приходится выполнять администратору 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 -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"