Windowsイベントログをwevtutilでフィルター&エクスポート

運用業務やトラブル対応などでWindows イベントログをフィルター&エクスポートすることがあったのでその方法をメモしておく。evtx形式でエクスポートすることを想定する。

使用コマンド

コマンドプロンプトのwevtutilコマンドを利用する。
PowerShellにもGet-EventLogやGet-WinEventといったイベントログを参照・抽出するコマンドがあるが、これらのコマンドにはevtx形式でのエクスポート機能は実装されていないようだった。そのため、今回はwevtutilを使っての検証を行った。

wevtutilで実施したこと

実施したいことは以下の通り。

  • イベントビューワー上の[Windows ログ]カテゴリ配下のログのうち、[Application]ログ、[セキュリティ]ログ、[システム]ログを個別に指定して参照。(フィルター条件1)
  • 参照する際に日付条件でフィルターを行いたい。実施日の前日分に出力されたログのみ参照。(フィルター条件2)
  • フィルター条件を適用し参照した結果を、evtx形式でエクスポート。

コマンド解説

wevtutil eplコマンド

結論:固有のログをevtx形式でエクスポートしたい場合は、wevtutil epl で実現できる。
パラメータの”epl”は”export-log”の略の模様。以下の形でコマンドを実行する。

wevtutil epl {epl | export-log} <Path><Exportfile>

rem サンプル
wevtutil epl System C:\Temp\system.evtx

参考URLは、https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/wevtutil#parameters

wevtutil epl への/q:<Query>オプション

ただし上記のコマンドだけでは、ログ日付でのフィルタを行えない。
日付でのフィルタを行うためには、/qオプションにてXPathクエリを記載する必要がある。

wevtutil epl {epl | export-log} <Path><Exportfile> /q:”*[sysytem[TimeCreated[@SystemTime>=’yyyy-mm-ddThh:mm:ss.sssZ’ and @SystemTime<=’yyyy-mm-ddThh:mm:ss.sssZ’]]]”

※注意:ここで指定する開始時刻・終了時刻のタイムゾーンは、OSで指定されたローカルなタイムゾーン(日本国内だとJST)ではなく、GMT(グリニッジ標準時)となっている。そのため、時間を指定する際はJSTから9時間分引いた時間を指定する必要がある。

rem サンプル:2023/11/18に出力されたsysytemログをエクスポート
wevtutil epl System  C:\Temp\system231120.evtx /q:"*[sysytem[TimeCreated[@SystemTime>='2023-11-18T15:00:00.000Z' and @SystemTime<='2023-11-19T14:59:59.999Z']]]"

以下の通り、ログが出力される。

Applicationログを出力する場合は以下の通り。

rem サンプル:2023/11/18に出力されたsysytemログをエクスポート
wevtutil epl Application C:\Temp\system231120.evtx /q:"*[sysytem[TimeCreated[@SystemTime>='2023-11-18T15:00:00.000Z' and @SystemTime<='2023-11-19T14:59:59.999Z']]]"

Securityログを出力する場合は以下の通り。

rem サンプル:2023/11/18に出力されたsysytemログをエクスポート
wevtutil epl Security C:\Temp\system231120.evtx /q:"*[sysytem[TimeCreated[@SystemTime>='2023-11-18T15:00:00.000Z' and @SystemTime<='2023-11-19T14:59:59.999Z']]]"

Xpathクエリ生成の方法

/q:オプションで指定するXpathクエリだが、記載方法が複雑なため手入力では作業効率が悪くなる。そこでイベントビューワーのフィルタ機能を利用し、GUI上で、Xpathクエリを生成することが多いようだ。
今回の検証では、ログ日付の絞り込み(開始日、終了日指定)クエリをXpathで作成する場合、どのような流れになるかを確認した。流れは以下の通り。

イベントビューワーにて対象のログを選択し、右クリック、[現在のログをフィルター(L)]を選択。

[現在のログをフィルター]画面の[フィルター]タブ、[ログの日付]から[ユーザ設定の範囲]を指定。

[ユーザ指定の範囲]画面に、フィルター日付設定範囲の開始日と終了日を指定する。

フィルター条件を適用したら、[XML]タブを開け、<SELECT>タグの中身を確認する。これがXpathクエリとなるので、コピーしてコマンドの/q:オプションへ適用する。

コメント

タイトルとURLをコピーしました