![当 Windows 7 插入或拔出电源时触发任务和运行程序?](https://linux22.com/image/1304915/%E5%BD%93%20Windows%207%20%E6%8F%92%E5%85%A5%E6%88%96%E6%8B%94%E5%87%BA%E7%94%B5%E6%BA%90%E6%97%B6%E8%A7%A6%E5%8F%91%E4%BB%BB%E5%8A%A1%E5%92%8C%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
可能重复:
有没有办法在电源事件发生时执行程序?
是否有 Windows 活动我可以在任务计划程序中看到当电源插入时触发的事件吗?当电源拔出时又会触发什么事件?
我想在使用电池供电时启动和停止 CrashPlan。(这一直是2.5 年前的功能请求在 CrashPlan 中,老实说,我迫不及待地想让他们添加它。)
其他人之前也问过如何禁用超级获取和搜索索引电池供电。我认为这个技巧也能解决这些问题。
有这样的 Windows 事件吗?如果没有,是否可以安装一个程序来检测电源变化,然后我可以为其创建任务计划程序触发器。
答案1
默认情况下,当您拔下或插入计算机时,Windows 不会记录事件。
但是,使用 PowerShell,您可以监听此类更改并将自己的事件写入日志。此脚本将执行此操作:
New-EventLog -Source BatteryStatusMonitor -LogName Application
Function OnBatteryStatusChange ($NewStatus) {
If ($NewStatus -eq 1) {
$EventID = 5001
$Message = "The computer was unplugged."
} ElseIf ($NewStatus -eq 2) {
$EventID = 5002
$Message = "The computer was plugged in."
} Else {
$EventID = 5000
$Message = "Battery status changed to $NewStatus"
}
Write-EventLog -LogName Application -Source BatteryStatusMonitor -EventID $EventID -Message $Message
}
$Query = "select * from __instancemodificationevent within 3 where targetinstance isa 'win32_battery' and targetinstance.batterystatus <> previousinstance.batterystatus"
Register-WmiEvent -Query $Query -Action {OnBatteryStatusChange $Event.SourceEventArgs.NewEvent.TargetInstance.BatteryStatus} -SourceIdentifier "BatteryStatusChange"
For (;;) {}