![当检测到电源变化时,如何让 Windows 任务计划程序触发事件?](https://linux22.com/image/1584501/%E5%BD%93%E6%A3%80%E6%B5%8B%E5%88%B0%E7%94%B5%E6%BA%90%E5%8F%98%E5%8C%96%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%A9%20Windows%20%E4%BB%BB%E5%8A%A1%E8%AE%A1%E5%88%92%E7%A8%8B%E5%BA%8F%E8%A7%A6%E5%8F%91%E4%BA%8B%E4%BB%B6%EF%BC%9F.png)
我编写了一个脚本,可以成功向我发送一条描述我电脑电池状态的电报消息。
我希望任务计划程序在电源变化时运行脚本,这样当家里的电源断电时,我知道我的冰箱有除霜的危险等等。
为了实现这一目标我做了以下事情:
- 打开事件查看器
- 在 Windows 日志 -> 系统下找到该事件,来源是“Kernel-Power”
- 点击“将任务附加到此事件”
- 设置任务并从任务计划程序手动成功运行
我的问题是才不是当计算机切换到电池供电时,做当计算机切换回主电源时就会起火,这对我没有帮助!
我已确保关闭“如果计算机使用交流电源则启动任务”的默认复选框,因此我希望该任务在任何情况下都能启动。
我还将其设置为“无论用户是否登录都运行”,尽管我几乎总是处于登录状态。
从事件日志来看,这两个事件非常相似,但是这个事件会触发:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Kernel-Power" Guid="{331c3b3a-2005-44c2-ac5e-77220c37d6b4}" />
<EventID>105</EventID>
<Version>1</Version>
<Level>4</Level>
<Task>100</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000404</Keywords>
<TimeCreated SystemTime="2019-03-05T17:21:55.021810500Z" />
<EventRecordID>75824</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="336" />
<Channel>System</Channel>
<Computer>Matthew-PC</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData>
<Data Name="AcOnline">true</Data>
<Data Name="RemainingCapacity">68</Data>
<Data Name="FullChargeCapacity">100</Data>
</EventData>
</Event>
而这个没有:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Kernel-Power" Guid="{331c3b3a-2005-44c2-ac5e-77220c37d6b4}" />
<EventID>105</EventID>
<Version>1</Version>
<Level>4</Level>
<Task>100</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000404</Keywords>
<TimeCreated SystemTime="2019-03-05T17:21:44.661890000Z" />
<EventRecordID>75823</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="336" />
<Channel>System</Channel>
<Computer>Matthew-PC</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData>
<Data Name="AcOnline">false</Data>
<Data Name="RemainingCapacity">68</Data>
<Data Name="FullChargeCapacity">100</Data>
</EventData>
</Event>
那么有人知道为什么任务没有触发吗?感觉就像 Windows 中其他地方的省电措施一样,但我无法解决(电源方案中隐藏了某些东西??)
答案1
Windows 任务计划程序任务仅在以下情况下触发:
未设置为仅当计算机空闲时才启动任务...(任务不使用 IdleSettings)
未设置为在自动维护期间运行(任务不使用 MaintenanceSettings)
设置为仅当用户登录时运行(任务 LogonType 为 TASK_LOGON_INTERACTIVE_TOKEN 或 TASK_LOGON_GROUP)
所有其他触发器都会被延迟,直到系统退出省电模式。
https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/battery-saver
答案2
设置任务时,第 4 个选项是先决条件(我的语言不是英语,我不知道你的系统怎么称呼它,从左到右,第四个选项),第二个选项“电源”是默认打开的,取消它!但这将是一个问题,你打开/关闭所有的三相交流电。
答案3
在任务计划程序中,在任务属性的“条件”选项卡下,取消选中“仅当计算机使用交流电源时启动此任务”。