首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过唤醒局域网检查计算机是否被激活

通过唤醒局域网检查计算机是否被激活
EN

Stack Overflow用户
提问于 2014-06-04 07:44:31
回答 2查看 3.5K关注 0票数 7

我正在研究一种解决方案,通过唤醒局域网激活机器,之后系统中心将更新推送到客户端pc(运行Windows 7)。

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

如果机器是通过唤醒局域网激活的,并且自激活以来没有用户登录到机器上,那么机器就可以安全关闭。否则,这台机器应该一直开着。

有什么办法检查计算机是如何被激活的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-04 09:30:31

由于Windows 7(可能是Vista),当您唤醒一台计算机时,“”会在系统事件日志中提供一个日志,给出唤醒源。这里有两个事件(在Windows 8桌面上进行,但我在Windows 7膝上也有相同的事件),第一个事件是由WOL生成的,第二个事件是使用前端按钮生成的:

因此,使用PowerShell,您可以测试:

代码语言:javascript
复制
(Get-EventLog -LogName System -Source "Microsoft-Windows-Power-Troubleshooter" -AsBaseObject | Sort-Object {$_.timegenerated} | select -last 1 ).Message

这样您就必须解析消息(不是很好)

代码语言:javascript
复制
get-winevent -FilterHashtable @{"ProviderName"="Microsoft-Windows-Power-Troubleshooter";"id"=1}  | Sort-Object {$_.timecreated} | select -last 1 | %{([xml]$_.ToXml()).Event.EventData.Data}

备注:微软-Windows-电源-疑难解答提供商也存在于W2K8-R2上,当我试图在我的旧服务器之一

票数 2
EN

Stack Overflow用户

发布于 2014-06-04 08:41:36

这可能不是您想要的,而是另一种方法:

  1. 在服务器端,请记住WOL数据包何时发送。
  2. 在客户端,向服务器询问最后的WOL数据包时间。
  3. 在客户端,检查PC的正常运行时间,例如使用Powershell中用于正常运行时间的WMICodeplex正常运行时间
  4. 比较这两个人。也许考虑一下硬件引导过程的一些延迟。我不知道正常运行时间是由硬件还是软件计算的。
  5. 对于登录用户,可以使用用于从Powershell登录用户的WMI
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24031755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档