替え玉バリカタでお願いします

お仕事と、お仕事そうでお仕事じゃない、少しお仕事な備忘など。

WindowsをタスクスケジューラとPowerShellでお手軽に監視する方法

先日のエントリ、

バックアップが失敗する場合の対処法(Windows Server 2008 R2) - 替え玉バリカタでお願いします

を教訓に、任意のイベントログを拾って警告してくれる仕組みを用意した。

概要

建付けとしては以下のとおり。

  • イベントをトリガーにしてタスクを実行(タスクスケジューラで)
  • タスクでメールを送信(PowerShellを使う)

PowerShellでメールを送信するスクリプトを作る

メール送信機能はタスクスケジューラの標準機能なのだが、メールサーバーがSMTP認証が必要だったりすると、使えない。したがって、PowerShellでメールを送信するスクリプトを作り、タスクから実行する。

$username = "admin@example.com"
$password = "P@ssWord1234"
$myhost = "example.com"
$port = 587 

 

$from = "admin@example.com"
$recipients = "sysadmin@example.com"
$subject = "[サーバ監視] Server0Aのバックアップが失敗しました"
$body = "イベントビューアでアプリケーションログを確認してください。"

 

$sc = New-Object Net.Mail.SmtpClient

$sc.Host = $myhost

$sc.Port = $port

 

$sc.Credentials = New-Object Net.NetworkCredential

$sc.Credentials.UserName = $username

$sc.Credentials.password = $password

  

$sc.send($from, $recipients, $subject, $body)

タスクスケジューラの設定

 次に、特定イベントを検知して警告メールを送信してくれるタスクを作る。

  • タスクの作成をクリック
    f:id:mtaniuchi:20131212141441p:plain
  • 全般タブに名前と説明を入れておくf:id:mtaniuchi:20131212141509p:plain
  • トリガー(タスクの開始)をイベント時に指定・カスタムフィルタを作成f:id:mtaniuchi:20131212141601p:plain

  • 新しいイベントフィルターを作成

    f:id:mtaniuchi:20131212141655p:plain

  •  メールを送信する操作を追加

    f:id:mtaniuchi:20131212141711p:plain

これでおしまい。OKをクリックして保存しておく。
※実行者のパスワードを求められるので入力しておく

任意のイベントを発生させる

さて、テスト。eventcreate.exeでイベントを発生させて、動作確認。

C:\Windows\system32>eventcreate.exe /t error /id 521 /L Application /so  "Backup" /d "TestMesage!"

メールが送信されていればOK!これで、安心して暮らせますね!

参考: