Я новичок в Powershell. Я пытаюсь получить информацию для нескольких IDS событий, касающихся аудита управления аккаунтом Я знаю, что сценарий, который я написал, недостаточно эффективен, но я не думаю, что это проблема здесь. По какой-то причине я не получаю выходные данные для события с идентификатором 4781, хотя я сгенерировал некоторые события, и они отображаются в EventViewer. Для идентификаторов событий, таких как 4720,4726,4722 и т. Д., Я могу нормально записывать их в выходной файл, используя тот же сценарий. Кто-нибудь знает, почему?
В настоящее время я получаю
Вывод: действие: пользовательский
Время: 31-08-2018 2:55
Кто: администратор
Пользователь: test2
$events = Get-Eventlog -LogName Security -ComputerName $DC.Hostname -after $startDate | where {$e.EventID -eq 4781 -or $e.EventID -eq 4720}
$ActivityOutput=foreach ($e in $events) {
if (($e.EventID -eq 4720)){
Write-Output "Action:User Created","Time:$($e.TimeGenerated.ToString("dd-MM-yyyy h:mm"))","Who:$($e.ReplacementStrings[4])","User:$($e.ReplacementStrings[0])"
Write-Output "===============================================`n"
}
if (($e.EventID -eq 4781)){
Write-Output "The name of an Object changed", "Time:$($e.TimeGenerated.ToString("dd-MM-yyyy h:mm"))", "Who:$($e.ReplacementStrings[5])","Old Value:$($e.ReplacementStrings[0])","New Value:$($e.ReplacementStrings[1])"
Write-Output "===============================================`n"
}
} Out-File -Append -FilePath C:\UserTracking.txt -InputObject $ActivityOutput
=========
ОБНОВЛЕНИЕ 04/09/2018
Таким образом, похоже, что Get-EventLog извлекает только некоторые из EventID, поэтому я пропустил некоторые из них, например, 4781. Я преобразовал в Get-WinEvent и, похоже, этот выбирает все нужные EventID.
Отредактированный код:
$events=Get-WinEvent -FilterHashtable @{Logname="Security"; StartTime=(get-date).AddDays(-6); ID=4781,4738,4725,4728,4729,4720,4726,4722,4740}
}
$ActivityOutput=foreach ($e in $events) {
# user account was created
if (($e.Id -eq 4720)){
Write-Output "Action:User Created","Time:$($e.TimeCreated.ToString("dd-MM-yyyy h:mm"))",***"Who:$($e.?)","User:$($e.?)"***
}
Теперь, какая-нибудь помощь о том, как получить информацию типа Кто внес изменения и для какого пользователя, используя Write-Output, как это показано выше?