LAPTOPの休止・スリープの復帰を検知

LAPTOPの休止・スリープから復帰したことを検知してプログラムを実行したい事があり作ったもの。

ついででスクリプトがあるフォルダにyyyymmのファイル名でログ出力します。

$query = "Select * From Win32_PowerManagementEvent where EventType=7"
Register-WmiEvent -query $query -sourceidentifier "Resume" 

try{
    While($true){
		Write-Output( (Get-Date -format "yyyy/MM/dd(ddd)_HH:mm:ss") + " イベント発生待機")
		$newEvent = Wait-Event
		Write-Output( (Get-Date -format "yyyy/MM/dd(ddd)_HH:mm:ss") + " Resume 復帰")
		Write-Output( (Get-Date -format "yyyy/MM/dd(ddd)_HH:mm:ss") + " Resume 復帰") | Out-File ((Get-Date -format "yyyyMM") + ".log") -append -encoding default

		$wsobj = new-object -comobject wscript.shell
		$result = $wsobj.popup("Login処理を行いますか?",0,"Done",0x1)

		if ($result -eq 1) {
			Start-Process "notepad"
		}
            
		Get-Event | Remove-Event
	}
}
catch{
	Write-Output( (Get-Date -format "yyyy/MM/dd(dd)_HH:mm:ss") + " 以下のエラーが発生しました")
	$error[0]
}
finally{
	#イベントを削除し購読をやめる
	Write-Output( (Get-Date -format "yyyy/MM/dd(dd)_HH:mm:ss") + " finally")
	Get-Event | Remove-Event
	Get-EventSubscriber | Unregister-Event
}

実行結果

コメント