带有 -RepetitionInterval 的 Powershell New-ScheduledTaskTrigger 重复任务

Nea*_*ers 3 powershell scheduled-tasks eventtrigger

我发现与 ScheduledTask cmdles 相关的错误给出了极其神秘的错误。我想安排一个测试任务每 1 分钟运行一次并永远重复。这是我正在尝试的,但没有成功:

cls
#$Action = New-ScheduledTaskAction -Execute "e:\Scripts\TestClusteredTask.cmd"
$DurationTimeSpan = New-TimeSpan -Minutes 1 
$DurationTimeSpanIndefinite = ([TimeSpan]::MaxValue) 
$DurationTempTest = New-TimeSpan -Days 1000
$Trigger = New-ScheduledTaskTrigger -Daily -At "00:01" -RepetitionInterval $DurationTimeSpan -RepetitionDuration $DurationTempTest  
Run Code Online (Sandbox Code Playgroud)

也试过这个:

$Trigger = New-ScheduledTaskTrigger -Daily -At "00:01" -RepetitionInterval $DurationTimeSpan -RepeatIndefinitely 
Run Code Online (Sandbox Code Playgroud)

错误输出:

New-ScheduledTaskTrigger : Parameter set cannot be resolved using the specified named parameters.
At C:\Users\nwalters\Documents\AddTestClusteredTask.ps1:6 char:12
+ $Trigger = New-ScheduledTaskTrigger -Daily -At "00:01" -RepetitionInterval $Dura ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-ScheduledTaskTrigger], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,New-ScheduledTaskTrigger
Run Code Online (Sandbox Code Playgroud)

我正在参考此网页以获取说明。http://technet.microsoft.com/en-us/library/hh849759.aspx

Win 2012/R2 上的 Powerhsell 版本 4

小智 9

我发现您可以在将触发器链接到任务之前对其进行修改。我的脚本每天在 8:00 点生成一个带有触发器的任务。任务每 60 分钟(1 小时)重复一次,随机延迟 30 分钟:

$Prog = $env:systemroot + "\system32\WindowsPowerShell\v1.0\powershell.exe"
$Opt = "-nologo -noninteractive -noprofile -ExecutionPolicy BYPASS -file \\mydomain.local\NETLOGON\Monitoring\monitoring.ps1"
$Action = New-ScheduledTaskAction -Execute $Prog -Argument $Opt 
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -RandomDelay "00:30" -At "08:00"
$Trigger.Repetition = $(New-ScheduledTaskTrigger -Once -RandomDelay "00:30" -At "08:00" -RepetitionDuration "12:00" -RepetitionInterval "01:00").Repetition
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$Task = Register-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal -TaskName "Monitor-PS1-V001" -Description "Starts Monitoring-Script" -Force
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索并没有找到好的解决方案。希望有人可以使用我的“想法”

问候罗伯特

  • 优秀的解决方案,与您同行! (2认同)

Mat*_*att 6

根据技术网,这是您正在使用的数据集

Parameter Set: Daily
New-ScheduledTaskTrigger [-Daily] -At <DateTime> [-DaysInterval <Int32> ] [-RandomDelay <TimeSpan> ] [ <CommonParameters>]
Run Code Online (Sandbox Code Playgroud)

在你的例子要指定-RepetitionInterval-RepetitionDuration哪个是部分-Once参数集。

Parameter Set: Once
New-ScheduledTaskTrigger [-Once] -At <DateTime> [-RandomDelay <TimeSpan> ] [-RepetitionDuration <TimeSpan> ] [-RepetitionInterval <TimeSpan> ] [ <CommonParameters>]
Run Code Online (Sandbox Code Playgroud)

这就是为什么你会得到一个歧义错误。它不知道您使用的是哪个参数集。

FullyQualifiedErrorId : AmbiguousParameterSet,New-ScheduledTaskTrigger
Run Code Online (Sandbox Code Playgroud)

因此,您需要指定-Once是否要使用这些其他参数。