Powershell мониторинг событий 41, 1074, 6008
Потребовалось создать пару скриптов, которые производят мониторинг журнала системы на определенные события. В первую очередь интересовали события под номерами 41, 1074, 6008. У меня уже были подобные статьи про мониторинг логов, но там были журналы безопасности.
Мониторинг по событию 41
1 2 3 4 5 6 7 8 9 10 11 12 |
Get-EventLog -LogName System -After (((Get-Date).addDays(-2)).date) -Before (Get-Date) | where {$_.EventId -eq 41} | ForEach-Object { $flam = New-Object PSObject | Select-Object Date if ($_.ReplacementStrings[4]) { $flam.Date = $_.TimeGenerated $flam } } $StrData=[string]$flam.Date $message = $StrData + " " + "Сервер: $env:computername" + " " + "Система перезагрузилась, завершив работу с ошибками. Возможные причины ошибки: система перестала отвечать на запросы, произошел критический сбой или неожиданно отключилось питание." |
Мониторинг по событию 1074
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$Events = Get-EventLog -LogName System -After (((Get-Date).addDays(-2)).date) -Before (Get-Date) | where {$_.EventId -eq 1074} $FlamDat = New-Object System.Management.Automation.PSObject $FlamDat | Add-Member NoteProperty Time ($null) $FlamDat | Add-Member NoteProperty User ($null) $FlamDat | Add-Member NoteProperty Action ($null) $Events | %{ $FlamDat.Time = $_.TimeGenerated $FlamDat.User = $_.ReplacementStrings[6] $FlamDat.Action = $_.ReplacementStrings[4] } $StrFlamDat=[string]$FlamDat.Time $message = $env:computername + " " + $StrFlamDat + " " + $FlamDat.Action + " " + $FlamDat.User |
Мониторинг по событию 6008
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$Events = Get-EventLog -LogName System -After (((Get-Date).addDays(-2)).date) -Before (Get-Date) | where {$_.EventId -eq 6008} $FlamDat = New-Object System.Management.Automation.PSObject $FlamDat | Add-Member NoteProperty Time ($null) $FlamDat | Add-Member NoteProperty User ($null) $FlamDat | Add-Member NoteProperty Action ($null) $Events | %{ $FlamDat.Time = $_.TimeGenerated $FlamDat.User = $_.ReplacementStrings[6] $FlamDat.Action = $_.Message } $StrFlamDat=[string]$FlamDat.Time $message = $env:computername + " " + $StrFlamDat + " " + $FlamDat.Action + " " + $FlamDat.User |
Получились вот такие простенькие скрипты, правда экспорт в файл я не делал, потребности такой нет.