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

我目前正在通过Powershell自动化计划任务的创建,并且正在使用
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的旧任务,它们使用灵活的基于表达式的调度机制()。