C# 检查计算机是否通过局域网唤醒激活
我正在开发一个解决方案,在这个解决方案中,计算机通过局域网唤醒激活,然后System Center将更新推送到客户端pc(运行Windows 7) 现在,我正在编写一个脚本(PowerShell/C#),该脚本检查更新完成后机器是否应该关闭 如果机器通过唤醒Lan激活,并且自激活后没有用户登录到机器,则可以安全关闭机器。否则,机器应保持开启状态C# 检查计算机是否通过局域网唤醒激活,c#,powershell,wake-on-lan,C#,Powershell,Wake On Lan,我正在开发一个解决方案,在这个解决方案中,计算机通过局域网唤醒激活,然后System Center将更新推送到客户端pc(运行Windows 7) 现在,我正在编写一个脚本(PowerShell/C#),该脚本检查更新完成后机器是否应该关闭 如果机器通过唤醒Lan激活,并且自激活后没有用户登录到机器,则可以安全关闭机器。否则,机器应保持开启状态 有没有办法检查电脑是如何被激活的 这可能不是您想要的,而是另一种方法: 在服务器端,还记得WOL数据包是何时发送的吗 在客户端,向服务器询问最后一个WO
有没有办法检查电脑是如何被激活的 这可能不是您想要的,而是另一种方法:
(Get-EventLog -LogName System -Source "Microsoft-Windows-Power-Troubleshooter" -AsBaseObject | Sort-Object {$_.timegenerated} | select -last 1 ).Message
这样,您必须解析消息(不太好)
备注:Microsoft Windows Power疑难解答提供程序也存在于W2K8-R2上,当我尝试在局域网上唤醒我的一台旧服务器时,
WakeSourceType
未知。如果您知道何时发送WOL数据包,然后你可以运行类似于查询上次用户登录的操作。我更好奇的是,你如何确定更新是否完成了安装,我可以想象,例如,需要重新启动一次或更频繁的更新确实会告诉你这一点,但现在我在3小时后重新启动10次。
get-winevent -FilterHashtable @{"ProviderName"="Microsoft-Windows-Power-Troubleshooter";"id"=1} | Sort-Object {$_.timecreated} | select -last 1 | %{([xml]$_.ToXml()).Event.EventData.Data}