Довольной частой задачей, которую приходится выполнять администратору Active Directory, является формирование списков отключенных или неактивных учетных записей и компьютеров, либо списков учеток с просроченными паролями. Для этого можно использовать как сохраненные LDAP запросы в консоли ADUC, так и уже знакомые нам командлеты PowerShell Get-ADUser, Get-ADObject или Get-ADComputer, однако создание правильного фильтра для данных команд может вызывать определенные затруднения. К счастью в модуле PowerShell для ActiveDirectory есть более удобный командлет для выполнения таких задач — Search-ADAccount. Рассмотрим примеры использования командлета Search-ADAccount для типовых задач.
Данный компонент также может быть включен командой:
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"