PowerShell 设置复杂重复频率需组合 New-ScheduledTaskTrigger 参数:每日高频轮询用 -Once 起点加 RepetitionInterval/Duration;多时间点用多个 Weekly 触发器数组;AtStartup 可原生重复;每月工作日需脚本辅助判断。
powershell 中设置复杂重复频率,核心是用 new-scheduledtasktrigger 的时间参数组合,而不是靠“每天+重复间隔”这种 gui 式简化逻辑。真正灵活的重复,要靠 -repetitioninterval 和 -repetitionduration 配合基础触发类型来实现。
每日固定时间 + 每隔 N 分钟重复执行
适用于每小时、每30分钟、每15分钟等高频轮询场景(如监控脚本):
- 先定义一个“一次性起点”触发器:$trigger = New-ScheduledTaskTrigger -Once -At "2026-09-25 08:00"
- 再叠加重复规则:$trigger.RepetitionInterval = (New-TimeSpan -Minutes 30)
- 设定持续时长(比如全天):$trigger.RepetitionDuration = (New-TimeSpan -Hours 16)
- 注册时传入该 trigger 变量即可
每周多天 + 不同时间点各执行一次
不能靠单个 Weekly 触发器实现“周二 9:00 和周四 14:00”,必须用多个触发器绑定同一任务:
- $t1 = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Tuesday -At "09:00"
- $t2 = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Thursday -At "14:00"
- 注册时写:-Trigger @($t1, $t2)
- 这样任务会在每周二 9 点和周四 14 点各自触发一次,互不干扰
开机后延迟启动 + 每隔 X 小时重复
适合需要系统就绪后再运行、且长期驻留的维护任务(如日志归档):
- $trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay (New-TimeSpan -Seconds 60)
- $trigger.RepetitionInterval = (New-TimeSpan -Hours 4)
- $trigger.RepetitionDuration = (New-TimeSpan -Days 365)
- 注意:-AtStartup 类型原生支持 Repetition,无需额外加 -Once
每月第 N 个工作日执行
PowerShell 原生命令不直接支持“第二个星期三”,但可通过组合条件逼近:
- 用 -Monthly 触发器设为每月 1–7 号之间某天:-DaysOfMonth 3
- 再在任务操作中加判断逻辑:开头用 (Get-Date).DayOfWeek -in 'Monday','Tuesday','Wednesday','Thursday','Friday' 过滤
- 或更准一点:用 (Get-Culture).Calendar.GetWeekOfYear((Get-Date), [Globalization.CalendarWeekRule]::FirstDay, [DayOfWeek]::Monday) 计算当前是第几周,再匹配


















