Небольшое добавление к предыдущей статье о получении времени последней регистрации (логона) пользователя в домене. После выхода Windows Server 2008 R2 и соответственного модуля Active Directory в PowerShell 2.0, стало возможным использовать простой скрипт для получения информации со всех контроллеров домена о времени последней регистрации пользователя.
Сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Import-Module ActiveDirectory $threashold = (Get-Date).AddMonths(-3) $dcs = Get-ADDomainController -Filter {Name -like "*"} $time = 0 foreach($dc in $dcs) { $hostname = $dc.HostName $filter = "*" $user = Get-ADUser -Filter {Name -like $filter} | Get-ADObject -Properties lastLogon, DisplayName foreach($ull in $user) { $time = $ull.LastLogon $dt = [DateTime]::FromFileTime($time) if($dt -lt $threashold) { Write-Host $ull.displayName "last logged on at:" $dt } } } |
С данным настройками скрипт вывод список пользователей со всех контроллеров домена, которые последний раз заходили в домен более трех месяцев назад.
Еще раз обращаю внимание, что скрипт будет работать только в Windows Server 2008 R2 или Windows 7!
$hostname = $dc.HostName
Где используется переменная $hostname?
В данном скрипте нигде, но можно добавить это поле, чтобы выводилось с какого компа последний раз пользователь заходил.
Как запустить этот скрипт из bat файла?
Сохранить сам с крипт в файл с расширением PS1.
В bat файл внести строку:
Powershell.exe -executionpolicy remotesigned -File C:\SCRIPTFILE.ps1