PowerShell で Windows のイベントログ検索する方法を紹介します。リモートデスクトップが使えなくて、SSHなどのコンソールからしかログイン出来ない時に役立つ(と思う)。
スポンサーリンク
EventLog コマンドレット
PowerShell でイベントログを検索・表示するには EventLog
コマンドレットを使用し、このコマンドに各種オプションを指定して、日付やエラーレベルなどでログを検索します。
例えば、ログの種類に「アプリケーション」を指定してイベントログを検索する場合は、次のようにします。
EventLog -LogName Application
表示件数を絞る
イベントログが大量に溜まっている場合、↑のコマンドのように条件なしでログを全件取得すると、ログがコンソール上に大量に表示され、いつまで経っても結果が返ってっこなくなるため、基本的には表示件数を絞りましょう。件数の絞り込みは -Newest
オプションを使用します。
例えば、アプリケーションログを、新しい物から順に先頭 100件のみ取得する場合は、次のようなコマンドを使用します。
EventLog -LogName Application -Newest 100
時間で絞り込む
日時を指定して、それ以前・以降のイベントログを検索する場合は、-Aefore
および -Before
オプションを使用します。
例1)2021/05/10 12:00:00 以前のデータを検索する
EventLog -LogName Application -Before ([Datetime]"2021/05/10 12:00:00")
例2)2021/06/12 12:00:00 以降のデータを検索する
EventLog -LogName Application -After([Datetime]"2021/06/12 12:00:00")
いろんな条件でイベントログを検索する
EventLog
コマンドレット自体は日時でしかイベントログを検索できませんが、パイプラインの Where-Object
を使う事で、いろんな条件でイベントログを検索することが可能。
エラーレベルで検索
Get-EventLog Application | Where-Object {$_.EntryType -eq "Error"}
ほかにも、次の表に示すような項目で検索が可能だ。
項目 | 説明 |
---|---|
$_.Index | イベントの連番 |
$_.EntryType | Error、Warning、Information など |
$_.Source | イベントソース |
$_.Message | イベントメッセージ |
部分一致で検索
エラーの内容の一部が分かっている時に、メッセージの内容を部分一致させて検索するのは、よくあるユースケースであろう。もちろん、PowerSehll でも部分一致検索は可能です。Where-Object
ではワイルドカード検索と、正規表現での部分一致検索をサポートしています。
次の例は、エラーメッセージに「山田」を含むイベントログを検索するコマンドです。
Get-EventLog Application | Where-Object {$_.Message -like "*山田*"}
使用できる比較演算子には、次の表に示す4つがあります。
演算子 | 説明 |
---|---|
-like | ワイルドカード検索 |
-nolike | 否定形のワイルドカード検索(一致しない時に True) |
-match | 正規表現での検索 |
-nomatch | 否定形の正規表現検索(一致しない時に True) |
※ワイルドカード検索では、特殊文字に *
, ?
, []
使える。
スポンサーリンク
イベントログの詳細情報を表示
ここまで紹介したように、Get-EventLog
コマンドレットは、検索にヒットしたイベントログを1件1行の形式で出力します。しかし、長いメッセージのイベントログの場合、次のように途中で文字が切れてしまい。全文を確認することができません。
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
132646 9 08 12:22 Information Windows Error Rep... 1001 障害バケット 1856633060806702132、種類 5...
そんな時は、Format-List
コマンドを使用するとこで、1件のイベントログオブジェクトがリスト形式で表示され、ログの内容を詳細に確認することができます。
Get-EventLog Application | Where-Object {$_.Index -eq 132646} | Format-List
■ 実行結果
Index : 132646
EntryType : Information
InstanceId : 1001
Message : 障害バケット 1856633060806702132、種類 5
イベント名: AppHangB1
応答: 使用不可
Cab ID: 0
問題の署名:
P1: A5M2.exe
P2: 2.15.0.361
P3: 5fba0cd8
P4: 64d9
P5: 67246080
P6:
P7:
P8:
P9:
P10:
添付ファイル:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERA433.tmp.WERInternalMetadata.xml
これらのファイルは次の場所にある可能性があります:
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\Critical_A5M2.exe_119c93ff38e187c717673c2da
8b73c713527ef4_803152ec_65fa13cc-abc6-4c29-aa15-961c62e4f740
分析記号:
解決策を再確認中: 0
レポート ID: 2f6e1d25-c7fc-4be7-ac53-af44dbf08dfa
レポートの状態: 268435456
ハッシュされたバケット: xxxxxxxxxxxxxxxxxxxxxxxxxxx
Cab GUID: 0
Category : (0)
CategoryNumber : 0
ReplacementStrings : {1856633060806702132, 5, AppHangB1, 使用不可...}
Source : Windows Error Reporting
TimeGenerated : 2021/09/08 12:22:25
TimeWritten : 2021/09/08 12:22:25
UserName :
0 件のコメント:
コメントを投稿