イベントログをコマンドでテキスト出力する方法とイベントログをエクスポートする方法

Windowsのイベントログ、正確に言うと、イベントビューアー画面に表示される「Windowsログ」をテキストで出力したり、イベントログそのものをエクスポートしてファイルに保存する方法を解説します。



各Windowsログの全レベルを件数指定でテキスト出力する方法

Windowsログには「重大エラー」や「エラー」等のレベルがありますが、全てのレベルを出力件数だけ指定してテキスト出力する方法です。

Windowsログの「システム」から10件のイベントログをテキスト出力

「システム」のログから最新の10件を、テキストファイル「c:\temp\sys_log_all.txt」へ出力します。

wevtutil qe System /c:10 /rd:true /f:text > c:\temp\sys_log_all.txt

「wevtutil qe System」の意味

Windowsログから「システム」を指定します。

「/c:10」の意味

取得するログ件数の指定で、「/c:10」は「10件のログ」を意味します。ログを30件取得したい場合は「/c:30」と指定します。

「/rd:true」の意味

「最新のログから取得する」という指定です。

「/f:text」の意味

「ログの出力をテキスト形式とする」という指定です。

xml形式で出力したい場合は「/f:xml」と指定します。

Windowsログの「アプリケーション」から10件のイベントログをテキスト出力

「アプリケーション」のログから最新の10件を、テキストファイル「c:\temp\ap_log_all.txt」へ出力します。

wevtutil qe Application /c:10 /rd:true /f:text > c:\temp\ap_log_all.txt

Windowsログの「セットアップ」から10件のイベントログをテキスト出力

「セットアップ」のログから最新の10件を、テキストファイル「c:\temp\setup_log_all.txt」へ出力します。

wevtutil qe Setup /c:10 /rd:true /f:text > c:\temp\setup_log_all.txt

Windowsログの「セキュリティ」から10件のイベントログをテキスト出力

「セキュリティ」のログから最新の10件を、テキストファイル「c:\temp\Sec_log_all.txt」へ出力します。

wevtutil qe Security /c:10 /rd:true /f:text > c:\temp\Sec_log_all.txt

Windowsログの「転送されたイベント」から10件のイベントログをテキスト出力

「転送されたイベント」のログから最新の10件を、テキストファイル「c:\temp\fwd_log_all.txt」へ出力します。

wevtutil qe ForwardedEvents /c:10 /rd:true /f:text > c:\temp\fwd_log_all.txt

各Windowsログをレベル別にテキスト出力する方法

Windowsログのレベルには、下記の4通りがあります。

  1. 重大エラー
  2. エラー
  3. 警告
  4. 情報

上記のレベル別にWindowsログをテキスト出力する方法を解説します。






Windowsログの「システム」から「重大エラー」のイベントログのみをテキスト出力

「システム」のイベントログから「重大エラー」のみ取得してテキストへ出力します。

wevtutil qe System /c:10 /rd:true /f:text /q:*[System[(Level=1)]] >> c:\temp\log_sys_level1.txt

「/q:*[System[(Level=1)]]」の意味

「Level=1」の「1」は「重大エラー」を意味します。

この数字を下記の通り指定することで、「重大エラー」から「情報」まで任意のレベルのログが取得できます。

  1. 「重大エラー」の場合
  2. 「Level=1」を指定

  3. 「エラー」の場合
  4. 「Level=2」を指定

  5. 「警告」の場合
  6. 「Level=3」を指定

  7. 「情報」の場合
  8. 「Level=4」を指定

「システム」以外のWindowsログを取得する方法

下記の赤文字部分である「System」の指定を変更することで、「システム」以外のWindowsログを取得できます。

wevtutil qe System /c:10 /rd:true /f:text /q:*[System[(Level=1)]] > c:\temp\log_sys_level1.txt

  1. Windowsログ「システム」の場合
  2. 「wevtutil qe System」と指定

  3. Windowsログ「アプリケーション」の場合
  4. 「wevtutil qe Application」と指定

  5. Windowsログ「セキュリティ」の場合
  6. 「wevtutil qe Security」と指定

  7. Windowsログ「セットアップ」の場合
  8. 「wevtutil qe Setup」と指定

  9. Windowsログ「転送されたイベント」の場合
  10. 「wevtutil qe ForwardedEvents」と指定

複数のレベルを指定してイベントログを取得する方法

例えば、「重大エラー」、「エラー」及び「警告」の3つのレベルのログを取得したい場合は、下記の通り「or」で繋いでレベルを指定します。

wevtutil qe System /c:10 /rd:true /f:text /q:”*[System[(Level=1 or Level=2 or Level=3)]]” > c:\temp\log_sys_level123.txt

Windowsログから特定のイベントIDのみテキスト出力する方法

Windowsログには必ず「イベントID」という数字を持っています。「イベントID」はエラーやメッセージで異なるため、例えば、ある特定のエラーが発生しているか確認する時には、この「イベントID」でログを絞り込んでテキスト出力すると便利です。

Windowsログの「システム」からイベントID「6006」のイベントログのみをテキスト出力

イベントログには「イベントID」が付与されており、特定のイベントIDを指定してテキスト出力する方法です。下記はWindowsログ「システム」のログから、イベントIDが「6006」のログのみテキスト出力する方法です。

wevtutil qe System /c:10 /f:Text /rd:true /q:*[System[(EventID=6006)]] > c:\temp\log_sys_6006.txt

「/q:*[System[(EventID=6006)]]」の意味

イベントID「6006」のみ出力






複数のイベントIDを指定する方法

イベントIDを複数指定したい場合は「or」で繋いで複数を指定します。なお、単独指定の場合と異なり「 ” 」で囲う必要もあります。

wevtutil qe System /c:10 /f:Text /rd:true /q:*[System[(EventID=6006 or EventID=9006)]] > c:\temp\log_sys_id.txt

イベントIDを範囲指定する方法

イベントIDを「~以下」や「~以上」という指定方法です。下記事例では、イベントIDが「15」以下のログのみテキスト出力する方法です。

wevtutil qe System /c:10 /f:Text /rd:true “/q:*[System[(EventID<=15)]]" > c:\temp\log_sys_u15.txt

取得するレベルを指定した上で特定のイベントIDを指定する方法

下記の事例は、レベルを「エラー」に限定した上で、イベントID「7031」のログのみテキスト出力する方法です。

wevtutil qe System /c:10 /f:Text /rd:true /q:”*[System[(Level=2) and (EventID=7031)]]” > c:\temp\log_sys_id.txt

取得するレベルを指定した上で特定のイベントIDを範囲指定する方法

下記の事例は、レベルを「エラー」に限定した上で、イベントID「15以下」のログのみテキスト出力する方法です。

wevtutil qe System /c:10 /f:Text /rd:true “/q:*[System[(Level=2) and (EventID<=15)]]" > c:\temp\log_sys_l2_u15.txt

Windowsログからイベントの発生時刻を範囲指定してテキスト出力する方法

Windowsログを調べる時、エラーが発生した辺りの時刻を範囲指定できると、欲しい情報が探しやすくなります。ここでは、イベントが発生した時刻を範囲指定でテキスト出力する方法を解説します。

イベントの発生時刻を範囲指定する方法

発生時刻は「グリニッジ標準時」で記録されているため、下記の開始時刻「2019-12-16T15:00:00」は日本時間の「12月16日の15時」ではなく、日本時間の「12月17日の0時」を示しています。

要するに、グリニッジ標準時は日本時間より9時間を引いた時刻で指定する必要があります。

従って、下記の事例では、「日本時間12月17日の0時~12月18日の0時」のログが取得されます。

> wevtutil qe System /f:Text /rd:true “/q:*[System[TimeCreated[@SystemTime>=’2019-12-16T15:00:00′ and @SystemTime<='2019-12-17T15:00:00']]]" > c:\temp\log_sys_20191216.txt

Windowsログをエクスポートする方法

Windowsログの全量を、イベントログの状態のままファイルへエクスポートする方法です。

出力された拡張子は「.evtx」となり、このファイルをダブルクリックするとイベントビューアーの画面が表示されると共に、エクスポートされたログが表示されます。

Windowsログ「システム」のエクスポート

Windowsログから「システム」のログをエクスポートする事例です。「C:\temp\system.evtx」はファイルの拡張子「.evtx」を変更しなければ、任意のディレクトリへ任意のファイル名で出力することが可能です。

> wevtutil epl System C:\temp\system.evtx

Windowsログ「アプリケーション」のエクスポート

Windowsログから「アプリケーション」のログをエクスポートする事例です。

> wevtutil epl Application C:\temp\app.evtx

Windowsログ「セットアップ」のエクスポート

Windowsログから「セットアップ」のログをエクスポートする事例です。

> wevtutil epl Setup C:\temp\Setup.evtx

Windowsログ「転送されたイベント」のエクスポート

Windowsログから「転送されたイベント」のログをエクスポートする事例です。

> wevtutil epl ForwardedEvents C:\temp\ForwardedEvents.evtx

Windowsログ「セキュリティ」のエクスポート

Windowsログから「セキュリティ」のログをエクスポートする事例です。

> wevtutil epl Security C:\temp\Sec.evtx

Windowsログをエクスポートした後にイベントログを消去する方法

Windowsログをエクスポート、いわゆるバックアップした後に、現時点までのログは不要となることから、Windowsログをエクスポートした後に、現時点までのログを全て削除する方法を解説します。

Windowsログ「システム」のエクスポート

Windowsログから「システム」のログをエクスポートした後、「システム」のログを全て削除する事例です。

> wevtutil cl System /bu:C:\temp\system.evtx

Windowsログ「アプリケーション」のエクスポート

Windowsログから「アプリケーション」のログをエクスポートした後、「アプリケーション」のログを全て削除する事例です。

> wevtutil cl Application /bu:C:\temp\app.evtx

Windowsログ「セットアップ」のエクスポート

Windowsログから「セットアップ」のログをエクスポートした後、「セットアップ」のログを全て削除する事例です。

> wevtutil cl Setup /bu:C:\temp\Setup.evtx

Windowsログ「転送されたイベント」のエクスポート

Windowsログから「転送されたイベント」のログをエクスポートした後、「転送されたイベント」のログを全て削除する事例です。

> wevtutil cl ForwardedEvents /bu:C:\temp\ForwardedEvents.evtx

Windowsログ「セキュリティ」のエクスポート

Windowsログから「セキュリティ」のログをエクスポートした後、「セキュリティ」のログを全て削除する事例です。

> wevtutil cl Security /bu:C:\temp\Sec.evtx