任务调度程序仅在该月的最后一个完整工作周运行任务

问题描述 投票:0回答:3

我有多项任务需要在每个月的最后一个完整工作周(周一至周五)安排。这些将从 Windows Server 2016 服务器进行安排。我无法弄清楚这样做的逻辑。

其他帮助信息: 2020 年 7 月是最后一个周一/周二等跑步的完美月份。不过,大多数月份不会以完整的工作周结束。它可能会在周二结束,整个工作周会在此之前 4 天结束。

我有如何做到这一点的想法,但它们尚未完全表述:

  1. 查找该月的最后一个星期五并从其之前 4 天开始。
  2. 找到最后一个星期一,并在下个月中至少还有 4 天。
  3. 如果该月的最后一天是星期日,则提前 6 天开始;周六,提前 5 天开始;等等

在任务计划程序中执行此操作的最干净的方法是什么? (正在安排的脚本位于 PowerShell 中,尽管我认为这并不重要)。

powershell if-statement scheduled-tasks windows-task-scheduler
3个回答
2
投票

所以,您的情况是:“我有一个脚本,我有一个复杂的日期时间表,我希望我的脚本根据该时间表启动。”,
你的问题是:“如何在 Windows 任务计划程序中执行此计划?”

我的答案是:
不要这样做,而是编写一个新脚本来验证当前日期,并验证当前日期是否对应于复杂的日期计划(在这种情况下,启动原始脚本),然后使用 Windows 任务计划程序来启动此脚本每天都有新脚本。

至于制作新脚本,此 URL 解释了如何在 Powershell 中执行日期处理。


0
投票

这个特定的用例实际上可以在任务计划程序中完全完成。 添加新触发器时,选择

Monthly
,然后为
Months
选择
<Select all months>. Then, change the radio button below it to 
On
and choose
Last
and
`。


0
投票

我可以建议一个解决方案吗:

在 VBA 中编写一个非常短的 Sub 例程来指示当前日期(使用“Now() + 1”)。 然后使用“instr(1,string1,””/””)”查看结果日期中的第二个条目(例如“5/1/2022”)是否为“1”。如果是,那么您可以在该月 1 号的前一天在准备好的 Notepad.txt 上发出警告,该文件还提供了有关在每月 1 号安排活动的问题的答案。该例程每天都会(在后台)运行,直到达到这个特定的事件。

© www.soinside.com 2019 - 2024. All rights reserved.