PowershellはWindows7およびWindows2008R2には標準で実装されている。これを利用してCUIベースでのイベントログの操作が可能になる。
イベントのログ形式は2つに分かれる。Windowsログ形式は基本となるフォーマットである。種類としては、アプリケーション、セキュリティ、Setup、Systemが提供されている。ETWログ形式はOSやアプリケーションをトレースするためのログ形式でありバイナリフォーマットになる。
Windowsログ形式のイベントはそれぞれ以下のコマンドで取得できる。
get-winevent -LogName Application get-winevent -LogName Security get-winevent -LogName Setup get-winevent -LogName System
イベントをフィルタする際にはWhere-Objectにパイプするか -FilterHashTableパラメータを使う。-FilterHashTableはサーバー側でのフィルタになるためにネットワーク越しに転送されるログサイズが小さくなる。またフィルタのリソースはサーバー上となる。
ETW形式のログを取得する際には対象となるログファイル名を確認する。この方法は2つある。一つはイベントビューワのツリー上から名前を取得する。
2つ目は以下のコマンドを使い、それらしいログを探す。
get-winevent -listlog *
get-wineventで使えるパラメータについてはこちらのリンクを参照する。
例えば以下のコマンドはサーバーTokServer01からSystemログのエラーのみ100件抽出する。このときにログイン情報としてDomainA\adminを使う。
get-winevent -FilterHashTable @{ LogName="System"; Level=2} -ComputerName TokServer01 -Credential DomainA\admin -MaxEvent 100
イベントログの出力はexport-csvにパイプする。またテキストファイルなどの入力はGet-ContentもしくはImport-csvを用いる。