我正在尝试使用以下触发器创建计划任务: - 启动 - 每5分钟一班 - 无限期运行
在GUI中,我可以通过选择以下内容轻松完成: - 开始任务:启动时 在“高级”选项卡中: - 每隔5分钟重复一次任务 - 持续时间:无限期
但是我在使用Powershell时遇到了麻烦。
我困扰的代码:
$repeat = (New-TimeSpan -Minutes 5)
$duration = ([timeSpan]::maxvalue)
$trigger = New-ScheduledTaskTrigger -AtStartup -RepetitionInterval $repeat -RepetitionDuration $duration
它不会采用RepetitionInterval和RepetitionDuration参数。但我需要这个功能。我怎么能完成我的目标?
要使用“启动”触发器和重复进行字面设置任务,您似乎必须进入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)
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>]
使用正确的参数集后,应成功分配计划任务触发器。