Windowsのイベントログをいちいち手作業でファイルに保存するのが面倒なので、イベントログをCSV形式で出力するコマンドを覚書しておく。
またコマンドを利用してダブルクリックすればいいようにバッチファイル化したのでその方法についても覚書しておく。
記事の最後にExcelのVBAを使用してExcelのワークシートにイベントログを出力する方法を記載した記事を紹介します。
WindowsのイベントログをCSVファイルに出力するコマンド
WindowsのイベントログをCSV形式のファイルに出力するコマンドを記載します。
参考情報
@ITの以下の記事を参考にしました。
サンプルコマンド
例1.Windowsのシステムイベントログをcsv形式で出力するサンプル
wmic ntevent where "(logfile='system' and timegenerated >= '20130120' and type='Error')" list /format:CSV > c:¥system.csv
上記の例は、2013/1/20以降に発生したWindowsのsystemイベントの中でエラーレベルのイベントだけをcsvファイル形式でリダイレクトする例。
なんだ、簡単じゃん!と思って実行してみたらこんなメッセージが表示されて出力されない...
「利用できるインスタンスがありません」
適当にぐぐってみると対処方法はあるものの、なんかめんどくさそうなので上の例でエラーレベルだけという条件を指定している"type='Error'"を"eventtype=1"に変更して再度実行してみた。
wmic ntevent where "(logfile='system' and timegenerated >= '20130120' and eventtype=1)" list /format:CSV > c:¥system.csv
今度はメッセージとかは表示されず正常にcsvファイルに保存された。
理由はよくわからないけど、欲しい結果が得られたのでとりあえず良しとする。
年に3回ほど作業で多数のサーバー達からアプリケーションイベントログとシステムイベントログを取らないといけないので、いちいちコマンド入力するのも面倒。
上記のコマンドを利用してバッチファイル化して、バッチファイルを叩けば勝手にシステムとアプリケーションのイベントをファイルに保存してくるように変更した。
サンプルプログラムを利用して作ったバッチファイルのサンプル
以下は、上記サンプルのコマンドを利用して作ったバッチファイルのサンプル。
wmic ntevent where "(logfile='system' and timegenerated >= '20140101' and (EventType='1' or EventType='2'))" list /format:CSV > "%~dp0%COMPUTERNAME%_%DATE:/=%_sys.csv"
wmic ntevent where "(logfile='application' and timegenerated >= '20140101' and (EventType='1' or EventType='2'))" list /format:CSV > "%~dp0%COMPUTERNAME%_%DATE:/=%_app.csv"
上記バッチファイルは、2014/1/1以降に発生したシステムイベントログとアプリケーションイベントログの内"エラー"と"警告"のみを抽出してcsvファイルに保存するバッチファイルの中身。
ファイルの保存先はバッチファイルが保存されているフォルダになる。
補足
条件の中で指定しているEventTypeの値は以下の一覧表を参考。
レベル | 値 |
---|---|
1 | エラー |
2 | 警告 |
4 | 情報 |
8 | セキュリティの成功の監査 |
16 | セキュリティの失敗の監査 |
Excelのワークシートにイベントログを出力する方法
この記事で紹介したコマンドを使用した方法では今一つだったので、ExcelのVBAを使用してイベントログをExcelのワークシートに出力するサンプルプログラムを作成した。
VBAのサンプルプログラムでは複数のリモートコンピューター(サーバー)に対して日付やイベントの種類(情報、警告、エラー)、イベントログ(システム、アプリケーション、セキュリティなど)を抽出条件として指定できる内容となっている。
詳細以下の記事を参照してください。
コメント