イベント ログで過去のバックアップを見ると、アプリケーション ログにイベント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
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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。