Powershell 如何配置";如果任务的运行时间超过“0”,则停止该任务;对于schtasks.exe

Powershell 如何配置";如果任务的运行时间超过“0”,则停止该任务;对于schtasks.exe,powershell,scheduler,windows-task-scheduler,Powershell,Scheduler,Windows Task Scheduler,我想使用Powershell为windows计划任务触发器选项卡中的选项“如果运行时间超过”设置值 已尝试使用/DU开关,但它不工作 下面是相同的屏幕截图。 如果需要进一步的信息,请告诉我 @托比尤:我也试过你的建议,但没有达到要求的价值。下面是供您参考的屏幕截图。 提前谢谢。您可以立即为整个任务设置它: $task = Get-ScheduledTask -TaskName "MyTask" $task.Settings.ExecutionTimeLimit = "PT3H" Set-Sc

我想使用Powershell为windows计划任务触发器选项卡中的选项“如果运行时间超过”设置值

已尝试使用/DU开关,但它不工作

下面是相同的屏幕截图。

如果需要进一步的信息,请告诉我

@托比尤:我也试过你的建议,但没有达到要求的价值。下面是供您参考的屏幕截图。


提前谢谢。

您可以立即为整个任务设置它:

$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
返回一个数组,其中包含特定任务的所有可用触发器对象。

您可以立即为整个任务设置它:

$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
返回一个数组,其中包含特定任务的所有可用触发器对象。

远程创建计划任务 远程创建计划任务
我使用的是Windows10Pro和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

我使用的是Windows10Pro和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

ExecutionTimeLImit
string格式:允许完成任务的时间量。此字符串的格式为PnYnMnDTnHnMnS,其中nY是年数,nM是月数,nD是天数,“T”是日期/时间分隔符,nH是小时数,nM是分钟数,nS是秒数(例如,PT5M指定5分钟,P1M4DT2H5M指定一个月、四天、两小时和五分钟).PT0S的值将使任务无限期运行。当此参数设置为Nothing时,执行时间限制是无限的。此处的字符串格式不直观。至少一开始不是。您需要添加有关如何将这些字符串设置为所需格式的信息。例如,上面提供的PS脚本未对其进行设置。但没有luck、 它没有改变值。它是为整个任务设置的,而不仅仅是为触发器设置的。@TobyU:你说得对,它是为整个任务设置的,但我只希望它用于特定的触发器。如何实现这一点。
ExecutionTimeLImit
string格式:允许完成任务的时间量。此字符串的格式为PnYNMNDTNMNNS,其中nY是年数,nM是月数,nD是天数,“T”是日期/时间分隔符,nH是小时数,nM是分钟数,nS是秒数(例如,PT5M指定5分钟,P1M4DT2H5M指定一个月、四天、两小时和五分钟).PT0S的值将使任务无限期运行。当此参数设置为Nothing时,执行时间限制是无限的。此处的字符串格式不直观。至少一开始不是。您需要添加有关如何将这些字符串设置为所需格式的信息。例如,上面提供的PS脚本未对其进行设置。但没有luck、 它没有改变值。它是为整个任务设置的,而不仅仅是为触发器设置的。@TobyU:你说得对,它是为整个任务设置的,但我只想为特定触发器设置它。如何实现这一点。