截至撰写本文时,唯一可用的选项是“开始任务”:
- 按计划进行
- 登录时
- 启动时
- 空闲状态
- 在一次活动中
- 修改/创建任务时
- 连接到用户会话时
- 断开与用户会话的连接
- 工作站锁定
- 工作站解锁
有没有办法让任务计划程序在关机前运行一项任务?
答案1
尽管这是一个较旧的线程,但我还是想添加一个我设计的、效果很好的解决方案。
我想在关机或重启时运行脚本或批处理文件,但我不想使用组策略关机脚本功能。原因很深奥,但我基本上需要在关闭某些服务之前运行脚本。
我最终创建了一个计划任务,如下所示:
- 类型:事件发生时(基本)
- 日志: 系统
- 来源:用户 32
- 事件ID:1074
当用户或命令以登录用户身份或代表用户启动关机或重启时,事件编号 1074将触发。通过创建一个任务来使用它来触发脚本,它将启动脚本并允许其完成,但它只会在日志中将任务报告为“正在运行”或“已触发”。我还没有在长脚本中使用过它,所以它可能值得进一步测试,但它对短脚本非常有用。
答案2
答案3
任务计划程序在关机时安排任务的能力有限。Stack Overflow 上提出了类似的问题(如何在关闭 Windows 时安排任务运行),那里的答案描述了除了使用任务管理器之外的几种方法,包括组策略编辑器方法,该方法描述得很详细,可能是更好的处理方法。
任务计划程序可以代替组策略编辑器使用。但是,它只适用于非常短的任务,这些任务将在系统重新启动或关闭时运行,通常只有几秒钟。
此外,请注意任务状态可以是:
由于用户尚未登录网络,因此未执行所请求的操作。指定的服务不存在。(0x800704DD)
但这并不代表它没有运行。
答案4
为此,您需要在任务计划程序中设置自定义事件过滤器。
触发器 > 新建 > 自定义 > 编辑事件 > XML
并粘贴以下内容:
<QueryList>
<Query Id="0" Path="System">
<Select Path="System">
*[System[Provider[@Name='User32'] and (Level=4 or Level=0) and (EventID=1074)]]
and
*[EventData[Data[@Name='param5'] and (Data='power off')]]
</Select>
</Query>
</QueryList>
这将过滤掉关闭电源仅限活动。
如果你查看事件查看器,你可以看到Windows 日志 > 系统 在下面详细信息选项卡 > XML 视图有这个。
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="User32" Guid="{xxxxx-xxxxxxxxxxx-xxxxxxxxxxxxxx-x-x}" EventSourceName="User32" />
<EventID Qualifiers="32768">1074</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8080000000000000</Keywords>
<TimeCreated SystemTime="2021-01-19T18:23:32.6133523Z" />
<EventRecordID>26696</EventRecordID>
<Correlation />
<Execution ProcessID="1056" ThreadID="11288" />
<Channel>System</Channel>
<Computer>DESKTOP-REDACTED</Computer>
<Security UserID="x-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx" />
</System>
- <EventData>
<Data Name="param1">Explorer.EXE</Data>
<Data Name="param2">DESKTOP-REDACTED</Data>
<Data Name="param3">Other (Unplanned)</Data>
<Data Name="param4">0x0</Data>
<Data Name="param5">power off</Data>
<Data Name="param6" />
<Data Name="param7">DESKTOP-REDACTED\username</Data>
</EventData>
</Event>
您可以在事件查看器中单击上面的查询列表代码来测试查询
创建自定义视图...> XML > 手动编辑查询
粘贴代码并命名仅限断电事件在您尝试在任务计划程序中执行此操作之前。