我正在尝试编写一个高效的 Windows 8.1 PowerShell 4.0脚本,它将捕获/触发两种类型的事件。我希望能够捕获这些事件/触发器,以便我可以执行诸如运行脚本或启动/停止服务等操作。
我想要捕捉/触发的事件是:
有效率我的意思是脚本 不应该 有一个无限循环来定期检查状态。我会假设我应该能够编写一些能够在Windows生成事件时捕获事件的内容吗?
到目前为止,我已经了解到我可以使用Register-WmiEvent
PowerShell cmdlet订阅WMI事件。
-query
或-class
会更好吗?我看到的唯一区别是,在使用-query
时(例如Register-WmiEvent -query "Select * From Win32_PowerManagementEvent where EventType=10"
)显然很容易过滤事件。我会担心如何捕捉我以后需要的特定事件。现在我正在试图弄清楚如何捕捉/触发事件。
答案 0 :(得分:3)
对于第一个(插入/拔出电源线),请查看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)}
在第二种情况下,您将脚本块放入所需的代码。