如何在windows上使用powershell和指定的触发器创建任务

vuv7lop3  于 2023-05-19  发布在  Windows
关注(0)|答案(1)|浏览(139)

我尝试使用powershell在windows taskscreduler上创建一个任务,但没有成功。我需要创建基于GUI描述的脚本:
每天08:00-触发后,每02:00:00重复一次,持续12小时
我已经找到了使用多个触发器的解决方案,可以在这种情况下工作:
-Trigger @(New-ScheduledTaskTrigger -Daily -At 8am; New-ScheduledTaskTrigger -Daily -At 10am; New-ScheduledTaskTrigger -Daily -At 12pm; New-ScheduledTaskTrigger -Daily -At 2pm; New-ScheduledTaskTrigger -Daily -At 4pm; New-ScheduledTaskTrigger -Daily -At 6pm; New-ScheduledTaskTrigger -Daily -At 8pm)
但问题是显而易见的....在未来,如果我需要一个任务,每天运行更多次,这个脚本将成为一个怪物。有人知道更好的解决方案吗?

7cjasjjr

7cjasjjr1#

鉴于New-ScheduledTaskTrigger不允许您将-RepetitionInterval-RepetitionDuration-Daily组合在一起,正如您所发现的,您可以使用 * 多个 * 触发器,您可以通过 * 算法 * 创建:

Register-ScheduledTask ... `
  -Trigger (0..6).ForEach({ New-ScheduledTaskTrigger -Daily -At "$(8+2*$_):00" })

注意事项:

  • 这些多个触发器也反映在任务计划程序GUI(taskschd.msc)中,如下所示:

  • 底层API * 能够 * 在 * 单个 * 触发器中表示此逻辑,正如您问题中的描述(“每天08:00-触发后,每02:00:00重复一次,持续时间为12小时”)所示。
  • 不幸的是,New-ScheduledTaskTrigger中纯粹的语法限制限制了对某些任务调度器API特性的访问。
  • This related post提供了允许使用单个触发器的 * 变通方法 *,但是这些变通方法更加冗长,因此对于内联解决方案来说不切实际。

相关问题