locked
イベントID:6008(予期せぬシャットダウン)発生時にメール通知させる方法 RRS feed

  • 質問

  • いつもお世話になっております。

    Windows Server 2008 SP2で、システムエラーログのイベントID:6008
    (予期せぬシャットダウン)発生時に電子メールの送信をさせたく、
    以下の内容を参考にタスクを作成しましたが、電子メールの送信が行われません。

    http://www.atmarkit.co.jp/fwin2k/win2ktips/1183taskevt/taskevt.html

    テスト用にシステムエラーログのイベントID:999が発生したときに
    電子メールの送信をさせるタスクを作成。

    eventcreateコマンドでイベントID:999を作成し、
    タスクによる電子メールの送信は確認出来ております。

    予期せぬシャットダウンの発生時は、PC起動後の最初にイベントID:6008のエラーログが残り、
    その後にWindows EventlogサービスやTask Schedulerサービスが実行状態に移行しておりました。

    このため、イベントID:6008発生時はTask Schedulerサービスが実行されていないために
    電子メールの送信がされないと考えております。

    http://technet.microsoft.com/ja-jp/library/cc721846.aspx

    予期せぬシャットダウンの発生時にサーバ管理者にメール送信をするにはどうしたらいいのでしょうか?

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

    2010年9月8日 6:14

回答

  • 発生タイミングは無理でも、再起動するタイミング(トリガをスタートアップ時にする)で過去一時間くらいのイベントを検索して、イベントID:999があればメールを送信するようなタスクを作ったらどうでしょうか?

    PowerShellだとこんな感じでしょうか。

    $now = [datetime]::Now
    #一時間前のイベントから
    $after = $now.addhours(-1) 
    get-eventlog -logname system -after $start -InstanceID 999
     | export-csv event.csv
    
    

    これでevent.csvというファイルができるので(場所はどこか適当な場所に変更してください)、それをメールで送ればいいんじゃないでしょうか。


    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク 三沢健二 2010年9月24日 6:24
    2010年9月12日 8:47

すべての返信

  • 発生タイミングは無理でも、再起動するタイミング(トリガをスタートアップ時にする)で過去一時間くらいのイベントを検索して、イベントID:999があればメールを送信するようなタスクを作ったらどうでしょうか?

    PowerShellだとこんな感じでしょうか。

    $now = [datetime]::Now
    #一時間前のイベントから
    $after = $now.addhours(-1) 
    get-eventlog -logname system -after $start -InstanceID 999
     | export-csv event.csv
    
    

    これでevent.csvというファイルができるので(場所はどこか適当な場所に変更してください)、それをメールで送ればいいんじゃないでしょうか。


    Thanks, K.Kamegawa (http://d.hatena.ne.jp/kkamegawa/)
    • 回答としてマーク 三沢健二 2010年9月24日 6:24
    2010年9月12日 8:47
  • こんにちは、フォーラムオペレーターの三沢健二です。

    kkamegawa さん、いつもアドバイスありがとうございます。

    案内いただいた内容は有用な情報ではないかと思いましたので、勝手ながら [回答としてマーク] を付けさせていただきました。

    もしよろしければ、試された結果などをお知らせいただけると嬉しいです。


    それでは、今後とも TechNet Forum をよろしくお願いします。

    ______________________________________
    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

    2010年9月24日 6:25
  • kkamegawa様

    ご報告が遅くなりまして申し訳ございませんでした。
    やりたかったことはkkamegawa様が仰った内容そのものズバリだったのですが、
    生憎、私にPowerShellの知識が皆無だったため、検証に時間がかかってしまいました。

    回答内容では何故かイベントログのエクスポートが出来なかったので
    私なりに手を変え、品を変え、最終的には以下の手順でテスト環境での検証が済みました。

    1.PowerShellの機能をインストールする。

    参考情報:GUIユーザーのためのPowerShell入門
    http://journal.mycom.co.jp/column/powershell/001/index.html

    2.スクリプト・ファイルを実行するために、PowerShellにて以下のコマンドを実行し、
    PowerShellのスクリプト実行ポリシーを変更する。

     Set-ExecutionPolicy RemoteSigned

    参考情報:PowerShellスクリプティングの第一歩
    http://www.atmarkit.co.jp/fwin2k/operation/psh02/psh02_01.html

    3.Windows Server 2008のCドライブ直下に「eventlog_sendmail」というフォルダを作成。

    4.下記の参考情報を元に、PowerShellで以下の内容を記述したps1ファイルを作成。

    $now = [datetime]::Now
    $after = $now.addhours(-1)
    get-eventlog system | Where-Object {$_.EventID -eq 6008 -and $_.EntryType -eq "Error" -and $_.TimeGenerated -gt $after} >c:\eventlog_sendmail\id6008.txt
    $id6008flag = get-content c:\eventlog_sendmail\id6008.txt | select-string "6008" -quiet
    if ($id6008flag) {$mail = New-Object System.Net.Mail.MailMessage("送信元メールアドレス","送信先"メールアドレス)
    $mail.Subject = "イベントID:6008 予期せぬシャットダウン発生"
    $mail.Body = @"
    これはテストです。
    "@
    $mail.SubjectEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")
    $mail.BodyEncoding = [System.Text.Encoding]::GetEncoding("ISO-2022-JP")
    $smtp = New-Object System.Net.Mail.SmtpClient("SMTPサーバーのFQDN(もしくはIPアドレス)")
    $smtp.Send($mail) }

    参考情報:Windows PowerShellコマンド&スクリプティング入門(後編)
    http://www.atmarkit.co.jp/fwin2k/operation/psh02/psh02_05.html

    5.タスク スケジューラでトリガを「システム起動時」に、操作を「プログラムの開始」にし、
     プログラム/スクリプトでPowerShellの実体ファイルを指定。
     引数の追加に、ps1ファイルのファイルパスを指定。

    参考情報:イベント・ログをトリガーにしてメールを送信する(基本編)
    http://www.atmarkit.co.jp/fwin2k/win2ktips/1183taskevt/taskevt.html

    以上の手順をHyper-VのゲストOSのWindows Server 2008で操作。
    Hyper-VマネージャでゲストOSのメニューバーから「操作」→「リセット」を実行し、
    意図的に「イベントID:6008 予期せぬシャットダウン」を発生させ、動作検証。

    無事、メールの送信がされました。

    非常に助かりました。ありがとうございました。

    2010年9月24日 14:18