如何用New-ScheduledTaskTrigger设置每月最后一个周二的触发器?
实现每月最后一个周二的集群计划任务触发器
我完全懂你的困扰——用Weekly间隔确实没法确保任务总是落在每月最后一个周二,毕竟不同月份的周数差异会打乱这个逻辑。好在New-ScheduledTaskTrigger的Monthly模式里有专门的参数组合能搞定这个需求,不用自己写复杂的日期计算逻辑。
核心思路
通过-Monthly模式配合两个关键参数,直接让任务调度器自动识别每月最后一个周二:
-DaysOfWeek: 指定触发的星期几(这里是Tuesday)-WeeksOfMonth: 设置为Last,告诉调度器只在该星期几的最后一次出现时触发
完整代码示例
先创建符合要求的触发器:
# 创建每月最后一个周二凌晨2点执行的触发器 $lastTuesdayTrigger = New-ScheduledTaskTrigger ` -Monthly ` -DaysOfWeek Tuesday ` -WeeksOfMonth Last ` -At 2:00AM
然后把这个触发器传递给New-ClusteredScheduledTask(假设你已经定义好任务操作$taskAction):
# 创建集群计划任务 New-ClusteredScheduledTask ` -TaskName "月度维护任务" ` -TaskType AnyNode ` -Action $taskAction ` -Trigger $lastTuesdayTrigger
验证触发器配置
创建完成后,你可以用下面的命令确认触发器是否正确配置:
Get-ScheduledTask -TaskName "月度维护任务" | Select-Object -ExpandProperty Triggers
输出里应该能看到WeeksOfMonth字段为Last,DaysOfWeek为Tuesday,确保逻辑符合预期。
这个方法的优势在于完全依赖Windows任务调度器的内置逻辑,不用自己处理月份天数、闰年等边缘情况,稳定性拉满~
内容的提问来源于stack exchange,提问作者James Edmonds
相关产品推荐
相关产品推荐

