我目前正在编写一个脚本,该脚本在运行时会创建一些计划任务,使主机做几件事,然后在指定的时间范围内重新启动。该脚本需要在多个域控制器上运行,因此我想通过使用类似 New-ScheduledTaskTrigger -RandomDelay 的东西来“负载平衡”,以便它们不会一次重新启动,而是将其分散开来。
目标是能够更改何时重新启动的一些变量,例如:
- 每月第一个星期一 18:00 至 23:59
- 每个星期四 01:00 和 06:00 之间
- 每天 04:00 到 ..... 你知道我要去哪里
但是,在 New-ScheduledTaskTrigger 中没有“-Monthly”之类的东西
这是第一个问题,我可能可以在其他帖子的帮助下解决这个问题,但如果我这样做,例如我无法使用 -RandomDelay,我认为这是它的主要功能。
如果 -Monthly 确实有效(对于每月触发),我想象它应该是这样的:
$rebootFrequency = MONTHLY # DAILY, WEEKLY, MONTHLY
$rebootWeek = FIRST # FIRST, SECOND, THIRD, FOURTH, LAST
$rebootDayOfWeek = MON # MON, TUE, WED, THU, FRI, SAT, SUN
$rebootTimeFrom = 10:00 # HH:MM[:SS]
$rebootTimeTo = 16:00 # HH:MM[:SS]
New-ScheduledTaskTrigger -"$rebootFrequency" -WeekOfMonth $rebootWeek;
-DayOfWeek $rebootDayOfWeek -At $rebootTimeFrom -RandomDelay $rebootTimeTo
你对我应该如何解决这个问题有什么建议吗?
我可以用 schtask.exe 做同样的事情,但是我最终不得不制作某种脚本来执行“RandomDelay”功能。
如果您有任何问题,请随时进一步询问。提前致谢。
挑战一
我现在已经让它工作了,但我试图让脚本更直观一点,但我不知道我会怎么做......
我想要做的是将使用天数(例如:星期四 16)“转换”为能够写“THU”。
现在它看起来像这样:
$rebootDaysOfWeek = "16" # SUN=1, MON=2, TUE=4, WED=8, THU=16 etc.
$trigger.DaysOfWeek = $rebootDaysOfWeek
但如果是这样的话,我会发现它更酷:
$rebootDaysOfWeek = "THU" # SUN, MON, TUE, WED, THU, FRI, SAT
$trigger.DaysOfWeek = $rebootDaysOfWeek
但我似乎找不到“转换” $rebootDaysOfWeek 以使用位掩码的方法。