【Windows】Windowsイベントログのエラーを抽出するコマンドサンプル

Windows イベントログのエラー一覧を抽出



Windows 環境においてWindows イベントログのエラーを抽出する方法を紹介します。
エラーイベントが発生していないかはイベントビューアツール (eventvwr.exe) で確認することが可能ですが、GUIベースであり、特に目視だと運用の負荷がかかります。
Powershell を使用します。ちょうどよいコマンドレットが使用できます。Get-WinEvent コマンドレットです。

サンプルプログラムの紹介


以下の例では system , application に関して、種類がエラーあるいは警告のログを表示します。デフォルトだと大量に表示されるため、MaxEvents で出力を5件に限定しています。


$array = @("system","application")
foreach($a in $array){
Get-WinEvent $a -MaxEvents 5 | ?{$_.Level -eq 2 -or $_.Level -eq 3}| Format-Table -AutoSize -Wrap
}




種類は ?{$_.Level -eq 2 -or $_.Level -eq 3 で抽出しています。レベルは以下のとおりです。

1 Critical
2:Error
3:Warning
4 Information

取得する日付の範囲を指定するサンプルです。一週間以内に限定しています。限定するために timespan を使用しています。-7 を指定することにより一週間以内を指定しています。ログが多いと実行するのにかなり時間がかかります。一度すべてのログを取得してからフィルタしているためと思われます。


$GetDateRange = (get-date) - (new-timespan -day 7)
get-winevent -logname "System" | ?{$_.Level -eq 2 -or $_.Level -eq 3} | where {$_.timecreated -ge $GetDateRange}| Format-Table -AutoSize -Wrap



次のコマンドはエラー一覧を出力し、ソート後に重複するものを削除しています。一意なメッセージの一覧を出力したい場合に使用してください。

PS> get-winevent -logname "System" | ?{$_.Level -eq 2 } |Select -ExpandProperty Message | sort | Get-Unique



参考:Get-Winevent のLogname パラメータの一覧
/WindowsUpdate/doc/Windows/Get-Winevent-LogName-parameter-list.html




Windowsのよくある質問 FAQ




個人的に独自に調査した事項をまとめています。各ベンダーとは全く関係がありません。
内容に誤りがある場合や情報が古くなっている場合があります。その場合でも修正されるとは限りません。
参考としてサイト閲覧ください。万が一誤りがあり損失等が発生しても保証しません。あくまでも自己責任でサイトを閲覧ください。