gpt4 book ai didi

c# - 检查计算机是否通过 Wake On Lan 激活

转载 作者:太空狗 更新时间:2023-10-29 20:39:19 25 4
gpt4 key购买 nike

我正在研究一种解决方案,通过 Wake On Lan 激活机器,然后 System Center 将更新推送到客户端电脑(运行 Windows 7)。

现在我正在编写一个脚本 (PowerShell/C#),该脚本检查更新完成后是否应关闭机器。

如果机器是通过 Wake On Lan 激活的,并且自激活后没有用户登录到机器,则可以安全地关闭机器。否则,机器应该继续运行。

有什么方法可以检查计算机是如何激活的吗?

最佳答案

从 Windows 7(可能是 Vista)开始,当您唤醒计算机时,“Microsoft-Windows-Power-Troubleshooter”会在系统事件日志中提供一个日志,提供唤醒源。这里有两个事件(在 Windows 8 桌面上拍摄,但我在我的 Window 7 笔记本电脑上有相同的事件),第一个是由 WOL 生成的,第二个是使用正面按钮生成的:

enter image description here enter image description here

因此,您可以使用 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 上,当我尝试在我的旧服务器之一 上唤醒局域网时WakeSourceType 未知。

关于c# - 检查计算机是否通过 Wake On Lan 激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com