Powershell计划任务在启动时重复

Ber*_*ert 5 powershell scheduled-tasks

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

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

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

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

它不会采用 RepetitionInterval 和 RepetitionDuration 参数。但我需要这个功能。我怎样才能实现我的目标?

Jar*_*rad 5

要使用“启动”触发器和重复来设置任务,似乎您必须访问 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)
Run Code Online (Sandbox Code Playgroud)