QA@IT

コマンドでのイベントログの抽出方法

8797 PV

すみません。

複数のイベントIDをコマンド上で下記条件で抽出し、テキストファイルに出力したいと思っています。
Windows2012サーバ環境です。

イベントビューアでもできなくはないですが、毎月作業しないといけなくて面倒なので、コマンドで処理できるようにしたいです。

■抽出条件
イベントログ:4624,4778
ログの日時:2016/2/1 0:00~2016/2/29 23:59:59
ソート:ログの日時の降順
イベントの種類:Security

しかし、ログの日時で降順に出力する方法が分かりません。

wevtutil qe Security /f:text /q:"*[System[EventID='4624' or EventID='4778'][TimeCreated[@SystemTime>='2016-02-01T15:00:00.000Z' and @SystemTime<='2016-02-29T14:59:59.999Z']]]" > test.log

また、イベントログがたまりすぎて、例えば2016年2月22日でローテーションされてしまった場合、2016年2月22日以降のデータしかログに表示されません。

途中でローテーションされた場合でも、2月1日以降のデータがログの日時の降順で出力できる方法が分かれば教えてください。

よろしくお願いいたします。

回答

1コマンドで降順にする方法はわかりませんが、
下記コマンドで出力後ファイルを降順に並べ替えてはいかがでしょう

sort /r /o soer_test.log test.log

古いイベントログを取得するにはイベントログサイズが最大値に達した時の設定を変えて、
アーカイブされるようにすればよいかと思います。

以下の箇所で設定できます。

1、管理ツール=>コンピューターの管理=>システムツール=>イベントビューアー

2、リストから対象のログのプロパティを表示。

3、イベントログサイズが最大値に達した時の設定をアーカイブする、もしくは上書きしないに変更。

この場合ログが消されずに増え続けますのでディスク容量に注意がいります

編集 履歴 (2)
  • イベントログのローテーションについては教えていただいた方法で実施するか検討してみます。ソートコマンドは、複数行で1イベント情報だからかうまくいきませんでした。別プログラムを作るしかなさそうです。ありがとうございました。 -
  • そうでしたか、確認不足ですいませんでした。
    別プログラムを作るのでしたらPowerShellのGet-EventLogコマンドが使えると思います。ご参考までに。
    -
  • ありがとうございます。PowerShellのGet-EventLog、確認してみます。 -

返信ありがとうございます。教えていただいたコマンドを実行すると

認証情報のフィールドは、この特定のログオン要求に関する詳細情報を示します。
認証情報のフィールドは、この特定のログオン要求に関する詳細情報を示します。
認証情報のフィールドは、この特定のログオン要求に関する詳細情報を示します。
新しいログオンのフィールドは、新しいログオンを作成するアカウント、つまりログオン先のアカウントを示します。
新しいログオンのフィールドは、新しいログオンを作成するアカウント、つまりログオン先のアカウントを示します。
新しいログオンのフィールドは、新しいログオンを作成するアカウント、つまりログオン先のアカウントを示します。
新しいログオン:
新しいログオン:
新しいログオン:

という感じになってしまいました。wevtutil に関しては
https://technet.microsoft.com/ja-jp/library/cc732848(v=ws.10).aspx
でも確認しましたが、ソートに関するオプションがなさそうなのできないのかもしれないですね。
別コマンドだったらできるのかわかりませんが、
ネット上にそれらしい情報が見つからないので別でプログラム作るしか術はなさそうだなぁと思っています。

イベントログのローテーションに関しては、教えていただいた方法でするか検討してみます。
ありがとうございました。
(すみません。書くところ誤りましたが消せないので、今回はこのまま残しておきます。次回は気を付けます)

編集 履歴 (3)
ウォッチ

この質問への回答やコメントをメールでお知らせします。