Поиск EventID по всем контроллерам домена при помощи PoSh
Появилась необходимость найти кто из администраторов включил отключенную учетку пользователя. Как это сделать при помощи PoSh читайте ниже:
В журналах Windows это событие попадает в журнал Security и имеет ID 4722. В Powershell Есть как минимум два коммандлета для работы с журналами:
1. Get-WinEvent
2. Get-EventLog
Для решения задачи будем использовать Get-WinEvent, т.к. он работает значительно быстрее чем Get-EventLog.
Итак, нам надо пройтись по всем домен-контроллерам организации и собрать с них события с ID 4722. Результаты, желательно выгрузить в файл, для дальнейшей обработки.
$dc = (Get-ADForest).Domains | %{ Get-ADDomainController –Filter * -Server $_ } $StartTime = (Get-Date).AddDays(-1) $datafile = "c:\AdEnable.csv" Set-Content -Value 'Кто;Кого;Что;Когда;Где;Куда;' -Path $datafile -Encoding UTF8 $dc | Foreach { $Event = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4722; StartTime=$StartTime} -ComputerName $_ foreach ($ev in $event) { $who = $ev.Properties[4].Value.ToString() $whom = $ev.Properties[0].Value.ToString() $cntrlr = $ev.MachineName $time = $ev.TimeCreated $AdObj = Get-ADObject -filter{SamAccountName -eq $whom} $Class = $AdObj.ObjectClass $DistName = $AdObj.DistinguishedName $Data = $who+";"+$whom+";"+$Class+";"+$time+";"+$cntrlr+";"+$DistName Add-Content -Value $Data -Path $DataFile -Encoding UTF8 } }