スクリプト3 イベントログに書き込まれたらすぐにメールで送信する

 第3回で紹介した2つのスクリプトを組み合わせて、監視業務にすぐにでも使えるスクリプトを仕立てましょう。具体的にはWindowsのイベントログを監視し、その状態変化に応じてメールでシステム管理者に通知するというものです。

 イベントログはシステム管理者にとって重要な情報源です。しかし通常は、管理者が自らWindowsログを参照してチェックしなければなりません。そのため、どうしても不調を利用者が感じたあとに参照して、トラブルの要因を探るような形となり、対策が後手に回りがちです。リアルタイムで不調の発生を知るには、何かしらの仕組みが必要となります。

 そこで「プロセス監視」と「Gmailを使ってメールを送信する」のスクリプトを組み合わせて、イベントログをリアルタイムで取得するスクリプトを作ります。Power-ShellのRegister-WmiEventコマンドを使うと、イベントの発生をリアルタイムに取得できます。

イベントログを監視する

 イベントログへの記録発生を知るにはRegister-WmiEventコマンドにWMIのクラス「__InstanceCreationEvent」を指定します。ここでは監視するイベントを識別するために、SQL風味のクエリー文を使用します(図3-10)。

図3-10●詳細なイベント取得
図3-10●詳細なイベント取得
前のスクリプトで紹介した「Register-WmiEvent」の使い方は、ある特定の種類のイベントをすべて登録する方法だった(a)。特定のプロセスの起動/終了など、詳細なイベントを識別するには、クエリー文字列を使う(b)。
[画像のクリックで拡大表示]