シンプル・スマートな画面録画ソフト EaseUS RecExperts

bat001

バッチ勉強継続中です。 サーバの管理者だったらよく見るであろうWindowsのイベントビューア、イベントログについてコマンドプロンプトおよびバッチからログを出力する方法について調べてみました。

 
【新機能】わからないことはAIに聞いてみよう
質問内容を入力すると、皆さんの疑問にAIがお答えします。

※当機能は現在ベータ版です。 予告なく公開終了する場合があります。

ソース

@echo off

wevtutil qe system /f:text /q:*[System[(EventID=%1)]]

処理の内容

ソースは一行だけなのでバッチと呼んでいいかどうかも怪しい作りですが、中でやっている処理については下記の通り。

「システム」のイベントログから、指定したイベントIDを出力する

wevtutil qe system /f:text /q:*[System[(EventID=%1)]]

Windows Vistaや7以降、Windows Server 2008以降でコマンドプロンプトからイベントログにアクセスするには wevtutil.exe を使います。

このコマンドから、イベントログにできる操作がすべて可能なのだとか。 コマンドのリファレンスについては、下記が詳しいのでこちらを参照。

Windows 7, Vista, Server 2008, R2 の新しいイベントログにスクリプトからアクセスする方法 - Shigeya Tanabe's blog - Site Home - TechNet Blogs

 

今回の記述の中の %1 はバッチの引数で、この引数に数値を指定してバッチを実行すればそのイベントIDのログを取得するという仕組みです。

イベントログを出力するコマンドのオプションについて

wevtutil qe system /f:text /q:*[フィルター設定]

wevutil qe で、イベントログを照会、出力するコマンドになります。

system はイベントログの種類(アプリケーションとか、システムとか)の指定ですね。 アプリケーションの場合は wevtutil qe application でいけます。

/q]*[] のオプションは、イベントログのフィルター設定の内容を指定するオプションです。

ここのフィルター指定の部分は入力項目が多岐にわたりすぎるのでここでは説明は控えときますが、一例を挙げると /q:*[System[(EventID=1)]] という指定にするとイベントIDが1のログのみを表示(フィルター)するということになります。

/f:text の部分は、出力するフォーマットについて。 このオプションの場合、出力結果をわかりやすいようにテキストの形式で出力します。 未設定だと、XMLファイルのまま出力されるので解読が大変。 逆にいえばXML形式で取り込んで他のアプリケーションなどで活用するのであれば、XMLのままの方がいいのでしょう。

出力される内容

とりあえず、今回の例ではサーバが起動された際に出力される「EventLog」のイベントID6009のログを引数から指定して出力してみました。 存在するログの分だけ一気に出力されるので、これはほんの一部です。

c:\>EventLogGet.bat 6009

Event[0]:
  Log Name: System
  Source: EventLog
  Date: 2014-10-29T09:31:51.000
  Event ID: 6009
  Task: N/A
  Level: 情報
  Opcode: N/A
  Keyword: クラシック
  User: N/A
  User Name: N/A
  Computer: PCNAME
  Description:
Microsoft (R) Windows (R) 6.01. 7601 Service Pack 1 Multiprocessor Free.

...

このような形でテキスト形式で一覧表示されるようになります。 引数部分は当然、別の値からの変数でも問題なしです。

 
この記事で解決しなかった疑問は疑問はAIに聞いてみよう
質問内容を入力すると、皆さんの疑問にAIがお答えします。

※当機能は現在ベータ版です。 予告なく公開終了する場合があります。

まとめ

  • コマンドプロンプトから wevtutil.exe を使う
  • イベントログの出力をバッチから行うことも可能
  • イベントID部分は変数や引数で指定できる
  • 出力形式はXMLやテキストの形式で可能

アイデア次第ではもうちょっと有効活用できそうな気がするので、もうちょっと調べてみます。 もうちょっと手を加えればイベントログからcsv形式にも出力可能なようなので、この辺も紹介できればいいですね。