是否可以修改(或创建)Windows 命令行中的计划任务以禁用“如果运行时间超过则停止任务”?

是否可以修改(或创建)Windows 命令行中的计划任务以禁用“如果运行时间超过则停止任务”?

我想通过命令行更改此选项schtasks(或其他),但文档似乎没有它的选项:

如果运行时间超过

仅 GUI 似乎允许这样做:

更改选项 - 如果运行时间更长则停止

我已经测试过这种方法:

schtasks /change /tn "/MyTask" /du 5000

(因此它持续 5,000 小时)但它不会改变该选项。
如果无法修改,我也可以通过创建新任务来解决这个问题。

答案1

我找到了一个解决方案,虽然不太方便。可以设置计划任务所需的选项,然后将其导出到 XML 文件中。然后,我们可以从 XML 中删除我们不想更改的所有部分。只有必须保留的强制性部分。<Actions>没有它,命令就不会运行。然后,我们删除其他所有内容,只留下我们想要在计划任务上修改的内容。在这种情况下,我们正在修改,stop if the task runs longer then因此我们留下部分<settings>和值<ExecutionTimeLimit>。(请注意,您还可以在其中输入无法在 GUI 中选择的值)保存 XML 文件,然后您可以通过运行来更新任何现有的计划任务

schtasks /create /tn 任务名称 /ru 用户帐户 /rp 密码 /f /xml schtaskmodify.xml

缺点是它不是通用的,您需要知道任务操作命令和任务凭据。它在没有 /ru 和 /rp 的情况下也可以工作,但计划任务的凭据会重置为您的凭据。

答案2

PowerShellSet-ScheduledTaskNew-ScheduledTaskSettingsSetcmdlet 可用于修改计划任务(无论是使用schtasks.exe、、New-ScheduledTaskGUI 等创建的)。试试这个:

$TaskSettingsObject = New-ScheduledTaskSettingsSet -ExecutionTimeLimit '05:00:00'
Set-ScheduledTask -TaskName "MyTask" -Settings $TaskSettingsObject

也可以通过将命令括在括号中来更简洁地写成一行,New-ScheduledTaskSettingsSet以便在将 CimInstance 对象作为参数传递之前构建它-Settings

Set-ScheduledTask -TaskName "MyTask" -Settings (New-ScheduledTaskSettingsSet -ExecutionTimeLimit '05:00:00')

相关内容