Powershell: не удается получить выходные данные для определенных ID событий, используя Get-EventLog - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в 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, как это показано выше?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

В общем, я не должен использовать «Get-EventLog», но «Get-WinEvent». Значения для каждого eventID могут быть получены с помощью $ _. Свойства [...]

Итак, закончили с черновиком кода ниже, который я повторю для всех желаемых EventID, так как мне нужны разные значения для каждого

$EventID=4781,4738,4725,4728,4729,4720,4726,4722,4740
$events=Get-WinEvent -FilterHashtable @{Logname="Security"; StartTime=(get-date).AddDays(-6); ID=EventID}
}
  $ActivityOutput=foreach ($e in $events) {
    if (($e.Id -eq 4720)){
      Write-Output "Action:User Created","Time:$($e.TimeCreated.ToString("dd-MM-yyyy h:mm"))","Who:"$e.Properties[4],"User:"$e.Properties[0]
      Write-Output "===============================================`n"
    }
0 голосов
/ 31 августа 2018

Вы, похоже, пропускаете возврат до Out-File. Не уверен, что это была опечатка в пасте или нет.

Чтобы проверить, действительно ли вы получаете какие-либо совпадения, нужно просто запустить $events | ?{$_.EventID -eq 4781}. Вы получите все результаты, напечатанные на экране. Если вы видите, что их нет, возможно, у вас нет журналов с EventID 4781.

...