在Windows 10中,我想知道如何在脚本中告诉系统是因为接收到局域网唤醒(WoL)数据包而打开系统,还是由于按下电源按钮而打开了系统而引导的。
我确实找到了Win32_ComputerSystem类的WakeUpType属性。记录该文件是为了返回“导致系统启动的事件”。有9种可能的返回值,其中之一是“ 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
在任何电源状态(最高S5)下,我如何可靠地判断系统由于WoL开机/唤醒?