Windows 10では、Wake-on-LAN(WoL)パケットを受信して電源がオンになったため、または電源ボタンを押したためにオンになったためにシステムが起動したかどうかをスクリプトで確認する方法を知りたい。
Win32_ComputerSystemクラスのWakeUpTypeプロパティを見つけました。「システムの電源を入れるイベント」を返すように文書化されています。可能な戻り値は9つあり、そのうちの1つは「5」です(「LANリモート」を意味します)。
残念ながら、私のシステムでは常に「6」(「電源スイッチ」を意味する)を返すようです:
PS C:\WINDOWS\system32> echo $(Get-WmiObject -class win32_computersystem).wakeuptype
6
システムをスリープ状態にし、WoLを使用してスリープを解除した後、Windowsはソース「Power-Troubleshooter」とテキストを含むイベントID 1を使用してシステムイベントログにイベントを投稿します。
ウェイクソース:デバイス-Intel(R)82579Vギガビットネットワーク接続
また、powercfg /lastwake
起動の理由としてNICを報告します。そのため、少なくともスリープから復帰した場合、WakeUpTypeプロパティがまだ「6」(電源スイッチ)を返していても、WindowsはWoLパケットが原因で起動したと判断できます。
残念ながら、システムがS5状態でWoLパケットを受信すると、適切に電源が投入されて起動しますが、WoLが原因で起動したとは言えません。powercfg /lastwake
電源ボタンを押したためにシステムがS5から電源オンになったときとまったく同じ出力を表示します。
C:\WINDOWS\system32>powercfg /lastwake
Wake History Count - 0
WoLが原因でシステムの電源がオン/ウェイクアップしたことを、どのような電源状態(S5まで)から確実に知ることができますか?