Powershell-每月计划任务触发器
我目前正在通过Powershell自动化计划任务的创建,并且正在使用Powershell-每月计划任务触发器,powershell,powershell-4.0,Powershell,Powershell 4.0,我目前正在通过Powershell自动化计划任务的创建,并且正在使用New ScheduledTaskAction、New ScheduledTaskTrigger和Register ScheduledTask命令。现在,我有几个作业需要在以下条件下运行: 每周五跑一次 每月1日运行一次 每月10日运行一次 虽然用于New ScheduledTaskTrigger命令的指定了Daily和Weekly时间跨度参数,但我没有看到用于Monthly的参数,这对于定义上述运行时间至关重要 在我使用P
New ScheduledTaskAction
、New ScheduledTaskTrigger
和Register ScheduledTask
命令。现在,我有几个作业需要在以下条件下运行:
- 每周五跑一次
- 每月1日运行一次
- 每月10日运行一次
New ScheduledTaskTrigger
命令的指定了Daily
和Weekly
时间跨度参数,但我没有看到用于Monthly
的参数,这对于定义上述运行时间至关重要
在我使用Powershell的这几年里,我想不出有哪一个实例可以通过标准UI界面完成某些事情,而这是我使用其中一个可用命令无法完成的
这是完全不可用的,还是我遗漏了什么
更新#1
我只是偶然发现了这一点,它看起来确实很有希望,但它引用了PSV3而不是PSV4——我将尝试一下并报告 正如我在最初的帖子中所说的,上面的超级用户问题看起来很有希望,但最终不适用于PSV4,帖子中给出的示例基本上是一个几乎没有上下文的复制粘贴作业 我意识到我可以利用我的Powershell脚本来处理每月的聚合,而且设置起来相当容易,尽管有些繁琐:
# set the trigger depending on time, span, and day
$runSpan = $task.SpanToRun;
if ($runSpan.Equals("Daily"))
{
$trigger = New-ScheduledTaskTrigger -Daily -At $task.TimeToRun
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $task.TaskName -User $Username -Password $Password -Description $task.Description
}
if ($runSpan.Equals("Weekly"))
{
$trigger = New-ScheduledTaskTrigger -Weekly -At $task.TimeToRun -DaysOfWeek $task.DayToRun
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $task.TaskName -User $Username -Password $Password -Description $task.Description
}
# script out SchTasks magic to create the monthly tasks
if ($runSpan.Equals("Monthly"))
{
$taskParams = @("/Create",
"/TN", $task.TaskName,
"/SC", "monthly",
"/D", $task.DayToRun,
"/ST", $task.TimeToRun,
"/TR", $filePath,
"/F", #force
"/RU", $Username,
"/RP", $Password);
# supply the command arguments and execute
#schtasks.exe $taskParams
schtasks.exe @taskParams
}
我正在使用一个in-script类来跟踪所有任务属性($task.TimeToRun
,$task.DayToRun
,等等),迭代这些属性的列表,为每日和每周任务应用Powershell实现,然后为每月任务切换到SchTasks.exe
我要注意的一点是,乍一看,我认为可以使用U
和p
参数来设置任务运行的用户上下文,但事实并非如此。指定Schtasks.exe运行的凭据-为了设置任务的用户上下文,必须使用RU
和RP
除了上面的链接,这两个链接也非常有用:
在2.5年后我发现了这一点&在我看来,新的ScheduledTaskTrigger仍然不允许您定义月度计划。这是对的吗?@RoyPardee,这是对的。实际上,我们已经为k8s linux workers和cronjobs放弃了许多基于windows的旧任务,它们使用灵活的基于表达式的调度机制()。