2011/02/08

バックアップを開始したはいいけど、眠くなってしまったら...

先日、久しぶりにメインの Windows 7マシンのフル バックアップを実行しました。夕食時にバックアップを開始しましたが、なかなか終わる気配はありません。もう眠くなってきました。でも、このまま放っておくと、電気代がもったいないです。そこで、いそいでスクリプトを作成し、バックアップが終了したらシャットダウンするように仕込んでみました。


イベント ログで過去のバックアップを見ると、アプリケーション ログにイベントID 4098 (バックアップが完了しました) が記録されていることが確認できます。これからイベント ログに記録されるはずのイベント ID 4098 を監視して、イベントが発生したらシャットダウンを開始すれば OK です。

TechNet スクリプトセンターの次の 2 つのサンプルを参考に、以下の ShutdownAfterBackupComplete.vbs を作成して、実行した状態で布団にもぐりこみます。

Scripting Guy さん、イベント ログで特定のイベントの発生を監視する方法はありますか
ローカル コンピューターのシャットダウン

ShutdownAfterBackupCompleted.vbs
----------------------------------------------------------------------------------
WScript.Echo "実行中のバックアップを監視中(終了したら自動シャットダウン)..."
  Set colEvents = GetObject("winmgmts:{(Security)}").ExecNotificationQuery("Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.EventCode = '4098'")
Do
    Set objLastEvent = colEvents.NextEvent
    WScript.Echo objLastEvent.TargetInstance.Message
    WScript.Echo "シャットダウンを開始します。おやすみなさい。"
    Set ColOperatingSystems = GetObject("winmgmts:{(shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
      objOperatingSystem.Win32Shutdown(1)
    Next
    WScript.Quit
Loop
----------------------------------------------------------------------------------

翌朝、コンピューターの電源はちゃんと切れていました。右の画面は、仮想マシンで再現した、バックアップ完了直後の画面です。

0 件のコメント: