我正在研究一种解决方案,通过唤醒局域网激活机器,之后系统中心将更新推送到客户端pc(运行Windows 7)。
现在我正在编写一个脚本(PowerShell/C#),它检查更新完成后机器是否应该关闭。
如果机器是通过唤醒局域网激活的,并且自激活以来没有用户登录到机器上,那么机器就可以安全关闭。否则,这台机器应该一直开着。
有什么办法检查计算机是如何被激活的吗?
发布于 2014-06-04 09:30:31
由于Windows 7(可能是Vista),当您唤醒一台计算机时,“”会在系统事件日志中提供一个日志,给出唤醒源。这里有两个事件(在Windows 8桌面上进行,但我在Windows 7膝上也有相同的事件),第一个事件是由WOL生成的,第二个事件是使用前端按钮生成的:


因此,使用PowerShell,您可以测试:
(Get-EventLog -LogName System -Source "Microsoft-Windows-Power-Troubleshooter" -AsBaseObject | Sort-Object {$_.timegenerated} | select -last 1 ).Message这样您就必须解析消息(不是很好)
get-winevent -FilterHashtable @{"ProviderName"="Microsoft-Windows-Power-Troubleshooter";"id"=1} | Sort-Object {$_.timecreated} | select -last 1 | %{([xml]$_.ToXml()).Event.EventData.Data}备注:微软-Windows-电源-疑难解答提供商也存在于W2K8-R2上,当我试图在我的旧服务器之一
发布于 2014-06-04 08:41:36
这可能不是您想要的,而是另一种方法:
https://stackoverflow.com/questions/24031755
复制相似问题