启动重复时的Powershell计划任务

问题描述 投票:3回答:2

我正在尝试使用以下触发器创建计划任务: - 启动 - 每5分钟一班 - 无限期运行

在GUI中,我可以通过选择以下内容轻松完成: - 开始任务:启动时 在“高级”选项卡中: - 每隔5分钟重复一次任务 - 持续时间:无限期

但是我在使用Powershell时遇到了麻烦。

我困扰的代码: $repeat = (New-TimeSpan -Minutes 5) $duration = ([timeSpan]::maxvalue) $trigger = New-ScheduledTaskTrigger -AtStartup -RepetitionInterval $repeat -RepetitionDuration $duration

它不会采用RepetitionInterval和RepetitionDuration参数。但我需要这个功能。我怎么能完成我的目标?

powershell scheduled-tasks
2个回答
1
投票

要使用“启动”触发器和重复进行字面设置任务,您似乎必须进入COM(或使用TaskScheduler UI,显然......)。

# Create the task as normal
$action = New-ScheduledTaskAction -Execute "myApp.exe"
Register-ScheduledTask -Action $action -TaskName "My Task" -Description "Data import Task" -User $username -Password $password

# Now add a special trigger to it with COM API.
# Get the service and task
$ts = New-Object -ComObject Schedule.Service
$ts.Connect()
$task = $ts.GetFolder("\").GetTask("My Task").Definition

# Create the trigger
$TRIGGER_TYPE_STARTUP=8
$startTrigger=$task.Triggers.Create($TRIGGER_TYPE_STARTUP)
$startTrigger.Enabled=$true
$startTrigger.Repetition.Interval="PT10M" # ten minutes
$startTrigger.Repetition.StopAtDurationEnd=$false # on to infinity
$startTrigger.Id="StartupTrigger"

# Re-save the task in place.
$TASK_CREATE_OR_UPDATE=6
$TASK_LOGIN_PASSWORD=1
$ts.GetFolder("\").RegisterTaskDefinition("My Task", $task, $TASK_CREATE_OR_UPDATE, $username, $password, $TASK_LOGIN_PASSWORD)

2
投票

New-ScheduledTaskTrigger使用参数集。当您指定希望计划任务在“登录时”启动时,您将自己限制为以下参数集:

Parameter Set: AtStartup
New-ScheduledTaskTrigger [-AtStartup] [-RandomDelay <TimeSpan> ] [ <CommonParameters>]

更有益的是,如果您使用“启动时”计划任务来使用“一次”参数集注册新的计划任务以每五分钟运行一次:

Parameter Set: Once
New-ScheduledTaskTrigger [-Once] -At <DateTime> [-RandomDelay <TimeSpan> ] [-RepetitionDuration <TimeSpan> ] [-RepetitionInterval <TimeSpan> ] [ <CommonParameters>]

使用正确的参数集后,应成功分配计划任务触发器。

© www.soinside.com 2019 - 2024. All rights reserved.