イベントログを取得する(Get EventLog)(1)
サーバの運用管理でイベントログを参照することがあります。
例えば、サービスの開始/終了やログオン時刻の取得などです。
Monadでは簡単にイベントログを取得できるCmdletが用意されているため、
VBScriptに比べてイベントログ周りの処理は非常に簡単です。
イベントログの取得(get-eventlog)
イベントログの種類
イベントログにはアプリケーション、セキュリティなどの種類があります。
その種類を取得するには「get-eventlog」に「-list」オプションを指定します。
MSH C:\> get-eventlog -list Max(K) Retain OverflowAction Entries Name ------ ------ -------------- ------- ---- 512 7 OverwriteOlder 181 アプリケーション 15,360 0 OverwriteAsNeeded 928 MonadLog 512 7 OverwriteOlder 0 セキュリティ 512 7 OverwriteOlder 248 システム
一覧表示されるのは「System.Diagnostics.EventLog」オブジェクトです。
MSH C:\> $(get-eventlog -list)[0].getType().fullname System.Diagnostics.EventLog
「get-eventlog」はEventLogオブジェクトのLogプロパティを指定してイベントログにアクセスします。
「-AsString」オプションを指定すると簡易にLogプロパティを取得可能です。
MSH C:\> get-eventlog -list -AsString Application MonadLog Security System
イベントログの取得
「get-eventlog」でイベントログにアクセスするには以下の構文を利用します。
get-eventlog [-LogName] System.String [-Newest System.Int32]
では、MonadLogのイベントログを取得してみましょう。
MSH C:\> get-eventlog MonadLog Index Time Type Source EventID Message ----- ---- ---- ------ ------- ------- 928 1 14 10:01 Info msh 400 Engine state is changed from None ... 927 1 14 10:01 Info msh 600 Provider "Certificate" is Started. 926 1 14 10:01 Info msh 600 Provider "Variable" is Started. 925 1 14 10:01 Info msh 600 Provider "Registry" is Started. 924 1 14 10:01 Info msh 600 Provider "Function" is Started. (省略)
これでは、延々ログエントリを表示し続けてしまいます。
このような際は、最新の指定件数のみ表示する「-Newest」オプションが便利です。
MSH C:\> get-eventlog MonadLog -Newest 3 Index Time Type Source EventID Message ----- ---- ---- ------ ------- ------- 928 1 14 10:01 Info msh 400 Engine state is changed from None ... 927 1 14 10:01 Info msh 600 Provider "Certificate" is Started. 926 1 14 10:01 Info msh 600 Provider "Variable" is Started.