Windows: Вывести список авторизаций конкретного пользователя в Active Directory.
Довольно часто возникает необходимость узнать имя или ip-адрес ПК, за которым работал пользователь. Если компьютер подключен к домену, сделать это проще всего проанализировав журналы событий контроллеров домена. Нужно искать события с кодом 4624 в журналах "Безопасность". Сей процесс можно оптимизировать powershell-скриптом, текст скрипта и описание ниже.
Скрипт запрашивает имя пользователя и ищет по журналам контроллеров домена события успешной авторизации.
Текст скрипта:
# Пишем приветствие.
write-host "Введите имя юзера:"
# Сохраняем имя пользователя в переменную $chekuser
$checkuser = read-host
# Устанавливаем начальную дату поиска в переменную $startDate. -2 означает за два дня до текущей даты, можно изменить по желанию.
$startDate = (get-date).AddDays(-2)
# Получаем контроллеры домена, на которых будем искать события авторизации
$DCs = Get-ADDomainController -Filter *
# Цикл всем контроллерам домена. Сохраняем события с кодом 4624 журнала Security начиная с даты в переменной $startDate
foreach ($DC in $DCs){
$logonevents = Get-Eventlog -LogName Security -InstanceID 4624 -after $startDate -ComputerName $dc.HostName
# Цикл по всем сохраненным событиям. Сохраняем события принадлежащие пользователю из переменной $checkuser
foreach ($event in $logonevents){
if (($event.ReplacementStrings[5] -notlike '*$') -and ($event.ReplacementStrings[5] -like $checkuser)) {
# Выводим события с типом входа 10 (Вход на сервер по RDP Remote(Logon Type 10))
if ($event.ReplacementStrings[8] -eq 10){
write-host "Type 10: Remote Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
# Выводим события с типом входа 3 (Авторизация по сети Network(Logon Type 3))
if ($event.ReplacementStrings[8] -eq 3){
write-host "Type 3: Network Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
}
}
}
Скачать скрипт можно отсюда.
Как не трудно догадаться, размер журнала событий ограничен. Так что если вам нужно найти ПК пользователя, который давно уволился и никто не помнит за каким компом он сидел, то данный скрипт вам скорее всего не поможет. Под эту задачу ваш покорный слуга не придумал ничего лучше, как искать папку с профилем используя админский сетевой доступ. Подробнее тут: Windows: Powershell-скрипт для поиска папки с профилем пользователя по всем компам в домене.