我正致力于通过Wake On Lan激活计算机的解决方案,然后System Center将更新推送到客户端电脑(运行Windows 7)。
现在我正在使用脚本(PowerShell / C#),它检查更新完成后是否应该关闭计算机。
如果通过Wake On Lan激活机器并且自激活后没有用户登录机器,则可以安全地关闭机器。否则,机器应该继续运行。
有没有办法检查计算机是如何激活的?
答案 0 :(得分:1)
从Windows 7(可能是Vista)开始,当您唤醒计算机时,“Microsoft-Windows-Power-Troubleshooter”会在系统事件日志中提供一个日志,提供唤醒源。这是两个事件(在Windows 8桌面上拍摄,但我的Window 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}
备注: Microsoft-Windows-Power-Troubleshooter 提供程序也存在于W2K8-R2上,当我尝试唤醒我的旧服务器之一{{1是未知的。
答案 1 :(得分:0)
这可能不是您正在寻找的,而是另一种方法: