Общее·количество·просмотров·страницы

среда, 2 апреля 2014 г.

PowerShell. Поиск учеток пользователей не логинившихся N дней.

Следить за актуальностью учетных записей в AD, правильное, но нудное и неблагодарное занятие. То отдел кадров не даст информацию, то сам забудешь и т.п. На выручку приходит PowerShell (подобных скриптов кстати на vbs превеликое множество), постараюсь по тексту дать комментарии.

# Получим список всех пользователей в домене собираем только включенные учетки (-Filter {Enabled -eq $true}) и выбираем свойства Name,Manager,LastLogon (-Properties Name,Manager,LastLogon )
$users = Get-ADUser -Filter {Enabled -eq $true} -Properties Name,Manager,LastLogon
#Далее передаем полученных пользователей по конвейеру выбираем из переменной поля Name,Manager, и строим хеш таблицу (@{n='LastLogon'; e={[DateTime]::FromFileTime($_.LastLogon)}} ) описывать не буду инфы много
$selectuser = $users | Select-Object Name,Manager,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}}
#Выбираем только те объекты у которых параметр LastLogon меньше текущей даты на месяц
$userotbor = $selectuser | where-object {$_.lastlogon -lt (get-date).addmonths(-1)} | Sort-Object lastlogon
#Экспорт в файл
$userotbor | Export-CSV c:\temp\lastlogon.csv -Encoding Unicode

P.S. В сети с несколькими домен контроллерами лучше делать отбор по параметру LastLogonTimeStamp

1 комментарий: