如何为 schtasks.exe 配置 "stop the task if it runs longer than"
how to configure "stop the task if it runs longer than" for schtasks.exe
我想使用 Powershell 在 windows 计划任务触发器选项卡中设置选项 "Stop task if runs longer than" 的值。
已尝试使用 /DU 开关,但它不起作用。
下面是相同的屏幕截图。
如果需要任何进一步的信息,请告诉我。
@TobyU:我也试过你的建议,但没有设置所需的值。以下是屏幕截图供您参考。
提前致谢。
您可以一次为整个任务设置它:
$task = Get-ScheduledTask -TaskName "MyTask"
$task.Settings.ExecutionTimeLimit = "PT3H"
Set-ScheduledTask $task
在上例中 3 小时后停止。
这就是您仅为特定触发器设置它的方式:
$task = Get-ScheduledTask -TaskName "MyTask"
$task.Triggers[0].ExecutionTimeLimit = "PT3H"
Set-ScheduledTask $task
其中 Triggers[0]
是您要调整的特定触发器,因为 $task.Triggers
returns 一个包含特定任务的所有可用触发器对象的数组。
远程创建计划任务
Invoke-Command -ComputerName Computername -Scriptblock
{
$action = New-ScheduledTaskAction -Execute 'C:\app.exe” '
$trigger = New-ScheduledTaskTrigger -Daily -At 10am -RandomDelay (New-TimeSpan - Minutes 480)
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -
RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -
TaskName "Schedule_task_name" -Description "Task Description"
$Task = Get-ScheduledTask -TaskName "Schedule_task_name"
$Task.Triggers[0].ExecutionTimeLimit= "PT30M"
Set-ScheduledTask $Task
}
我正在使用 Windows 10 Pro 和 PowerShell 7,以下版本对我来说效果很好。
创建新任务:
# Creating a task with multiple triggers and different execution limits
$taskName = "MyTask"
$trigger1 = New-ScheduledTaskTrigger -Once -At "2021-05-10 12:00:00"
$trigger1.ExecutionTimeLimit = "PT20M"
$trigger2 = New-ScheduledTaskTrigger -Once -At "2021-05-13 17:30:30"
$trigger2.ExecutionTimeLimit = "PT50M"
$taskTriggers = @(
$trigger1,
$trigger2
)
$taskAction = New-ScheduledTaskAction -Execute "notepad.exe"
Register-ScheduledTask -TaskName $taskName -Trigger $taskTriggers -Action $taskAction
对于更新现有任务的触发器,@TobyU 提出的解决方案对我来说效果很好:
# Updating execution limits of a task that already exists
$taskName = "MyTask"
$task = Get-ScheduledTask -TaskName $taskName
$task.Settings.ExecutionTimeLimit = "PT30S" # Global limit
$task.Triggers[0].ExecutionTimeLimit = "PT10S" # Limit for trigger 1
$task.Triggers[1].ExecutionTimeLimit = "PT15S" # Limit for trigger 2
Set-ScheduledTask $task
不过,您也可以用新触发器完全替换旧触发器:
# Completely replacing all triggers with new one of an already existing task
$taskName = "MyTask"
$trigger = New-ScheduledTaskTrigger -Once -At "2021-05-17 17:17:17"
$trigger.ExecutionTimeLimit = "PT42M"
Set-ScheduledTask -TaskName $taskName -Trigger $trigger
我想使用 Powershell 在 windows 计划任务触发器选项卡中设置选项 "Stop task if runs longer than" 的值。
已尝试使用 /DU 开关,但它不起作用。
下面是相同的屏幕截图。
如果需要任何进一步的信息,请告诉我。
@TobyU:我也试过你的建议,但没有设置所需的值。以下是屏幕截图供您参考。
提前致谢。
您可以一次为整个任务设置它:
$task = Get-ScheduledTask -TaskName "MyTask"
$task.Settings.ExecutionTimeLimit = "PT3H"
Set-ScheduledTask $task
在上例中 3 小时后停止。
这就是您仅为特定触发器设置它的方式:
$task = Get-ScheduledTask -TaskName "MyTask"
$task.Triggers[0].ExecutionTimeLimit = "PT3H"
Set-ScheduledTask $task
其中 Triggers[0]
是您要调整的特定触发器,因为 $task.Triggers
returns 一个包含特定任务的所有可用触发器对象的数组。
远程创建计划任务
Invoke-Command -ComputerName Computername -Scriptblock
{
$action = New-ScheduledTaskAction -Execute 'C:\app.exe” '
$trigger = New-ScheduledTaskTrigger -Daily -At 10am -RandomDelay (New-TimeSpan - Minutes 480)
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -
RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -
TaskName "Schedule_task_name" -Description "Task Description"
$Task = Get-ScheduledTask -TaskName "Schedule_task_name"
$Task.Triggers[0].ExecutionTimeLimit= "PT30M"
Set-ScheduledTask $Task
}
我正在使用 Windows 10 Pro 和 PowerShell 7,以下版本对我来说效果很好。
创建新任务:
# Creating a task with multiple triggers and different execution limits
$taskName = "MyTask"
$trigger1 = New-ScheduledTaskTrigger -Once -At "2021-05-10 12:00:00"
$trigger1.ExecutionTimeLimit = "PT20M"
$trigger2 = New-ScheduledTaskTrigger -Once -At "2021-05-13 17:30:30"
$trigger2.ExecutionTimeLimit = "PT50M"
$taskTriggers = @(
$trigger1,
$trigger2
)
$taskAction = New-ScheduledTaskAction -Execute "notepad.exe"
Register-ScheduledTask -TaskName $taskName -Trigger $taskTriggers -Action $taskAction
对于更新现有任务的触发器,@TobyU 提出的解决方案对我来说效果很好:
# Updating execution limits of a task that already exists
$taskName = "MyTask"
$task = Get-ScheduledTask -TaskName $taskName
$task.Settings.ExecutionTimeLimit = "PT30S" # Global limit
$task.Triggers[0].ExecutionTimeLimit = "PT10S" # Limit for trigger 1
$task.Triggers[1].ExecutionTimeLimit = "PT15S" # Limit for trigger 2
Set-ScheduledTask $task
不过,您也可以用新触发器完全替换旧触发器:
# Completely replacing all triggers with new one of an already existing task
$taskName = "MyTask"
$trigger = New-ScheduledTaskTrigger -Once -At "2021-05-17 17:17:17"
$trigger.ExecutionTimeLimit = "PT42M"
Set-ScheduledTask -TaskName $taskName -Trigger $trigger