gpt4 book ai didi

windows - 使用 Register-WmiEvent 使用 PowerShhell 4.0 捕获 Windows 8.1 系统事件/触发器?

转载 作者:可可西里 更新时间:2023-11-01 09:24:38 24 4
gpt4 key购买 nike

我正在尝试编写一个高效 Windows 8.1 PowerShell 4.0 脚本,它将捕获/触发两种类型的事件。我希望能够捕获这些事件/触发器,以便我可以执行一些操作,例如运行脚本或启动/停止服务或其他操作。

我想捕捉/触发的事件是:

  • 电源线插入/拔出(电池充电/放电)
  • 硬件(如 Surface Pro 2 Type Cover 2)已连接/断开连接

高效是指脚本不应该有一个无限循环来定期检查状态。我假设我应该能够编写一些能够在 Windows 生成事件时捕获事件的东西?

到目前为止,我了解到我可以使用 Register-WmiEvent用于订阅 WMI 事件的 PowerShell cmdlet。

  1. 我认为这是最有效的方式,这样我就不必不断轮询,而是对事件使用react?
  2. 如果是这样,在注册事件时使用-query 还是-class 更好?我看到的唯一区别是,使用 -query 时显然很容易过滤事件(例如 Register-WmiEvent -query "Select * From Win32_PowerManagementEvent where EventType=10" ).

稍后我会担心如何捕获我需要的特定事件。现在我正试图弄清楚如何捕获/触发一般事件。

最佳答案

对于第一个(电源线插入/拔出),查看Win32_PowerManagementEvent class ;你可以使用:

Register-WmiEvent -Query "select * from Win32_PowerManagementEvent" -MessageData "Event Power by JPB" -SourceIdentifier "EVTPOW1" 
Wait-Event -SourceIdentifier "EVTPOW1"

或者

Register-WmiEvent -Query "select * from Win32_PowerManagementEvent"  -SourceIdentifier "EVTPOW2"  -Action {Write-Host "blurp"; [console]::Beep(500,500)}

在第二种情况下,您将需要的代码块放入脚本中。

关于windows - 使用 Register-WmiEvent 使用 PowerShhell 4.0 捕获 Windows 8.1 系统事件/触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201856/

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