Небольшое добавление к предыдущей статье о получении времени последней регистрации (логона) пользователя в домене. После выхода Windows Server 2008 R2 и соответственного модуля Active Directory в PowerShell 2.0, стало возможным использовать простой скрипт для получения информации со всех контроллеров домена о времени последней регистрации пользователя.
Сам скрипт:
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