如何在PowerShell中创建带开机启动延迟的任务计划程序任务
问题原因
New-ScheduledTaskTrigger cmdlet 提供的 -RandomDelay 参数仅对定时类触发(每日、每周、单次触发等)生效,-AtStartup 开机触发类型的固定延迟配置对应触发器对象的独立Delay属性,和RandomDelay属于不同的配置字段,因此直接传-RandomDelay参数不会生效。
另外你代码里的New-SchedulerTaskTrigger属于笔误,正确的cmdlet名称是New-ScheduledTaskTrigger。
正确配置方案
要给开机启动类的计划任务配置和GUI「延迟任务时间」一致的效果,手动修改开机触发器的Delay属性即可,属性值需要遵循ISO 8601时间格式:
- 30秒对应
PT30S - 1分钟对应
PT1M - 1小时对应
PT1H
完整示例代码如下:
$triggers = @() # 配置开机启动后延迟30秒触发 $startupTrigger = New-ScheduledTaskTrigger -AtStartup $startupTrigger.Delay = "PT30S" $triggers += $startupTrigger # 每日触发任务的RandomDelay配置保持原有写法即可正常生效 $triggers += New-ScheduledTaskTrigger -Daily -At "00:00" -RandomDelay "00:00:30"
补充说明
- 如果需要开机触发的随机延迟效果,可以同时设置
Delay属性和RandomDelay属性,二者叠加后会在「Delay时长 到 Delay+RandomDelay时长」的区间内随机选择时间触发。
内容的提问来源于stack exchange,提问作者Purclot
相关产品推荐
相关产品推荐

