可能重复:
有没有办法在电源事件发生时执行程序?
是否有 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 (;;) {}