繁体   English   中英

如何使用 PowerShell 创建每 x 分钟或 x 小时运行一次的计划任务?

[英]How can I create a scheduled task using PowerShell that runs every x minutes or x hours?

使用 PowerShell 7.3.1,所以不能使用Register-ScheduledJob 无需直接修改计划任务 XML 文件,因为它们存储在 3 个不同的地方,我如何在 Windows 中创建一个每隔 x 小时或 x 分钟运行一次的计划任务。

我在 GUI 中完成了这个

在此处输入图像描述

我想在 PowerShell 中做类似的事情。

我已经检查了这个类似的问题,但它对我的情况来说是不完整的。

阅读New-ScheduledTaskTrigger info ,似乎无法为每个人找到一个参数。

这就是我能想到的

$trigger = New-ScheduledTaskTrigger -RepetitionInterval "PT5M" 

另一个想法,如果实际上不可能用本机 PowerShell 做我想做的事情,如果我用 PowerShell 创建我的任务和at startup时的占位符触发器,然后根据我上传的屏幕截图使用schtasks.exe配置触发器怎么办?

如果可行,使用schtasks.exe修改触发器的命令是什么,如屏幕截图所示?

您需要将[timespan]实例传递给New-ScheduledTaskTrigger cmdlet 的相关参数,例如,您可以使用New-TimeSpan cmdlet 构建它。

$trigger = 
  New-ScheduledTaskTrigger `
    -Once -At (Get-Date).AddSeconds(5) `
    -RandomDelay (New-TimeSpan -Seconds 30) `
    -RepetitionInterval (New-TimeSpan -Minutes 5)

笔记:

  • -Once -At (Get-Date).AddSeconds(5)从现在开始 5 秒后启动任务一次

    • New-ScheduledTaskTrigger似乎无法指定屏幕截图中显示的“在任务创建/修改时”选项(唯一与时间无关的选项是-AtLogon-AtStartup ,后者指的是系统的启动),并且-At值必须在未来才能真正开始,因此会有 5 秒的延迟- 这并非万无一失,但除非您的系统负载异常重,否则应该这样做。
  • -At需要一个[datetime]实例,不带 arguments 的Get-Date返回当前时间点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM