wevtutilでイベントログを書き出す基本は、epl を使って EVTX ファイルとして保存することです。最短の流れは、wevtutil el でログ名を確認し、wevtutil qe で数件だけ内容を見て、wevtutil epl <ログ名> <保存先.evtx> を実行するだけです。wevtutil は Windows 10/11 と主要な Windows Server で利用でき、イベントログのエクスポート、アーカイブ、クリアまで対応しています。(Microsoft Learn)
ただし、実際に触ると迷いやすい点があります。epl の1つ目の引数は見た目に反して通常は「ログ名」で、ファイルパスになるのは /lf:true や /sq:true を使う場合だけです。さらに、既存ファイルを上書きするなら /ow:true、条件を絞って書き出すなら /q が必要です。ここを最初に理解しておくと、ほぼ詰まりません。(Microsoft Learn)
wevtutilでイベントログを書き出す前に押さえること
最初に対象ログを決めます。迷ったら Application System Security の3つから始めれば十分です。Microsoft の説明では、Application はアプリケーションが出すイベント、System は Windows システム コンポーネントのイベント、Security はログオン試行やリソース利用などの監査イベントです。ログ名の一覧は wevtutil el、構成やログファイルのパス確認は wevtutil gl <LogName> で行えます。(Microsoft Learn)
まず覚えるコマンドは次の5つです。el はログ名一覧、gl は構成確認、qe は中身の確認、epl は書き出し、cl /bu はバックアップしながらクリアです。公式リファレンスのサブコマンドとサンプルもこの流れで並んでいます。(Microsoft Learn)
| やりたいこと | コマンド例 | 使いどころ |
|---|---|---|
| ログ名を一覧する | wevtutil el | 正しいチャンネル名を探す |
| 構成や保存先を確認する | wevtutil gl System | 有効状態やログパスを確認する |
| 数件だけ見る | wevtutil qe System /c:3 /rd:true /f:text | 対象ログの見当違いを防ぐ |
| EVTXへ書き出す | wevtutil epl System C:\Logs\System-backup.evtx | まず使う基本形 |
| 退避してから消す | wevtutil cl System /bu:C:\Logs\System-before-clear.evtx | ログを空にする前の保全 |
wevtutilでイベントログを書き出す基本手順
ログ名を確認する
最初にやることは、正しいログ名の確認です。epl の構文上は <Path> と書かれていますが、既定ではここに入れるのはファイルパスではなくログ名です。ログファイルそのものを対象にするのは /lf:true を使うとき、構造化クエリファイルを対象にするのは /sq:true を使うときです。まずは「1つ目はログ名」と覚えるのが近道です。(Microsoft Learn)
wevtutil el
Windows Logs 配下の Application System Security だけでなく、Applications and Services Logs 配下の長いチャンネル名もそのまま指定できます。Microsoft のトラブルシュート例でも、Microsoft-Windows-WLAN-AutoConfig/Operational や Microsoft-Windows-GroupPolicy/Operational を wevtutil epl で書き出しています。(Microsoft Learn)
wevtutil epl Microsoft-Windows-GroupPolicy/Operational C:\Logs\GroupPolicy-Operational.evtx
wevtutil epl "Microsoft-Windows-WLAN-AutoConfig/Operational" C:\Logs\WLAN-AutoConfig.evtx
まず数件だけ見て対象を間違えない
いきなり書き出すより、qe で数件だけ見て対象が正しいか確認したほうが安全です。公式サンプルでも、Application ログの最新3件をテキストで確認する使い方が紹介されています。また、gl ではログが有効か、最大サイズやログファイルのパスなども確認できます。(Microsoft Learn)
wevtutil gl System
wevtutil qe System /c:3 /rd:true /f:text
この確認を挟むだけで、「書き出せたけれど欲しいログではなかった」という初歩的な失敗をかなり減らせます。
eplでそのまま書き出す
対象が決まったら、epl で EVTX に書き出します。基本構文は <ログ名> <保存先ファイル> です。Microsoft の公式例でも System を C:\backup\system0506.evtx にエクスポートしています。(Microsoft Learn)
wevtutil epl System C:\Logs\System-backup.evtx
wevtutil epl Application C:\Logs\Application-backup.evtx
wevtutil epl Security C:\Logs\Security-backup.evtx
同じ名前のファイルがすでにある場合、確認なしで上書きしたいなら /ow:true を付けます。/ow:true を付けないまま毎回同じファイル名に保存しようとして止まるのは、かなりありがちなミスです。(Microsoft Learn)
wevtutil epl System C:\Logs\System-backup.evtx /ow:true
必要ならXPathで絞り込む
全部ではなく一部だけ欲しいときは /q を使います。/q は XPath クエリでフィルターを指定するオプションで、指定しなければ全イベントが対象です。Windows Event Log がサポートするのは XPath 1.0 のサブセットなので、まずは単純な条件から始めるのが安全です。なお、/q は /sq:true と併用できません。(Microsoft Learn)
XPath でよく使う Level は、一般に 1=Critical 2=Error 3=Warning 4=Informational と理解すると組みやすくなります。Get-WinEvent の公式資料でも同じレベル値が説明されています。(Microsoft Learn)
たとえば、重大イベントだけを System から抜き出すなら次の形です。これは Microsoft の XPath サンプルそのものです。(Microsoft Learn)
wevtutil epl System C:\Logs\System-critical.evtx /q:"*[System[Level=1]]"
過去24時間の警告以上を抜き出したいなら、次の形がわかりやすいです。これも Microsoft の XPath 例に沿った条件です。(Microsoft Learn)
wevtutil epl System C:\Logs\System-last24h.evtx /q:"*[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
失敗しやすいポイントと対処
wevtutil で止まりやすいのは、構文の勘違いと権限周りです。特に epl の1引数目の意味、/ow:true の有無、/q と /sq:true の使い分けは、公式仕様どおりに押さえるだけで解決します。(Microsoft Learn)
| 症状 | 原因 | 対処 |
|---|---|---|
| ログが見つからない | 1つ目の引数をファイルパスだと思っている | まず wevtutil el で正しいログ名を確認する |
| 同名ファイルに保存できない | 上書き指定がない | 同じファイル名を使うなら /ow:true を付ける |
| フィルターが効かない | /q と /sq:true を混同している | 最初は /q:"*[System[Level=1]]" のような単純な XPath で試す |
Access is denied が出る | ログアクセス権が不足している | まず管理者権限で実行し、必要ならイベントログ権限を確認する |
| Event Viewer の Saved Logs が増える | 開いた保存済みログの場所情報が残る | Event Viewer を閉じてから C:\ProgramData\Microsoft\Event Viewer\ExternalLogs を整理する |
特に Security ログは権限の影響を受けやすく、Microsoft のトラブルシュートでも権限不備で Access is denied になる例が案内されています。また、イベントログのアクセス権は個別に構成でき、Security ログは書き込み権限の扱いも特別です。権限問題の切り分けでは、最初に管理者権限のコマンド プロンプトで試すのが実務的です。(Microsoft Learn)
書き出した後の見方、戻し方、代替策
書き出したEVTXの開き方
保存した EVTX は Event Viewer の Open Saved Log から開けます。Microsoft の別記事では、保存済みログを開く操作が案内されており、EVT/EVTX を頻繁に表示すると Saved Logs にエントリが蓄積すると説明されています。保存先の場所情報は %ProgramData%\Microsoft\Event Viewer\ExternalLogs に XML で保持されるため、不要なエントリが増えたら Event Viewer を閉じてから整理します。(Microsoft Learn)
戻し方の考え方
ここで誤解しやすいのが「書き出した EVTX を元のイベントログへ戻せるか」です。wevtutil の公式サブコマンドを見ると、主に用意されているのはエクスポート、アーカイブ、クリアで、保存した EVTX をライブのイベントログへ書き戻す専用コマンドは見当たりません。運用上は、書き出した EVTX は保管・提出・解析用と考えるのが安全です。もし現行ログを空にしたいなら、cl /bu: でバックアップを取ってからクリアします。(Microsoft Learn)
wevtutil cl Application /bu:C:\Logs\Application-before-clear.evtx
/bu で指定するバックアップファイルは .evtx 拡張子付きにしておくのが公式仕様です。(Microsoft Learn)
epl以外を選ぶ場面
用途で迷ったら、epl / al / cl /bu / Get-WinEvent を次のように分けると判断しやすいです。al は自己完結型アーカイブで、ロケール情報も一緒に保持されるため、パブリッシャーが入っていない環境でも読みやすいのが強みです。Get-WinEvent はイベントログやログファイルを取得でき、XPath・構造化 XML・FilterHashtable での絞り込みにも対応します。さらに、Microsoft は大規模ログでは Where-Object に流すより FilterHashtable を使うほうが効率的だと案内しています。(Microsoft Learn)
| 方法 | 向いている場面 | ポイント |
|---|---|---|
wevtutil epl | 通常の退避、提出用の保存 | まず使う基本形 |
wevtutil al | 長期保管、別環境へ持ち出す | 自己完結型で読みやすい |
wevtutil cl /bu | ログを空にする前に保全したい | バックアップしながらクリア |
Get-WinEvent | 細かく絞り込んで別処理につなげたい | スクリプト化や後加工に向く |
迷ったらこの順番で進める
迷ったら、wevtutil el でログ名を確認し、wevtutil qe <LogName> /c:3 /rd:true /f:text で中身を3件だけ見て、最後に wevtutil epl <LogName> C:\Logs\<名前>.evtx で書き出してください。上書きが必要なら /ow:true、条件を付けるなら /q、消す前の退避なら cl /bu: を足すだけです。この順番で進めれば、wevtutilでイベントログを書き出す作業はかなり安定します。(Microsoft Learn)

コメント