安排任务以每月运行当前日期时间

时间:2018-04-06 05:14:03

标签: windows powershell scheduled-tasks

我正在使用powershell的Register-ScheduledTask模块创建一个每月第一天运行的计划任务。

Register-ScheduledTask -Xml (Get-Content -Path PathtoXml.xml | Out-String) -TaskName TaskName"

xml具有以下内容 -

 <Triggers>
<CalendarTrigger>
  <StartBoundary>2017-12-01T11:00:00</StartBoundary>
  <Enabled>true</Enabled>
  <ScheduleByMonth>
    <DaysOfMonth>
      <Day>1</Day>
    </DaysOfMonth>
    <Months>
      <January />
      <February />
      <March />
      <April />
      <May />
      <June />
      <July />
      <August />
      <September />
      <October />
      <November />
      <December />
    </Months>
  </ScheduleByMonth>
</CalendarTrigger>

我面临的问题是StartBoundary。我不想为StartBoundary提供修复日期,因为过去的日期不会激活任务。这也是一个强制性的论点。

无论如何我能做到吗?

2 个答案:

答案 0 :(得分:0)

如果问题是您的XML文件中有一个过期日期已过期,并且您每次使用该文件时都需要更新它,那么一种方法是在您阅读时进行简单的文本替换内容。例如,此代码将使占位符与将来5分钟的日期交换:

$xml = (Get-Content -Path PathtoXml.xml -Raw) -replace `
       "(?<=<StartBoundary>).*(?=</StartBoundary>)", (Get-Date).AddMinutes(5).ToString('s')

答案 1 :(得分:0)

您做出了错误的假设。 StartBoundary 可以过去。任务执行将相对于StartBoundary中设置的时间进行。在这种情况下,日期是无关紧要的。日期也可以是将来的时间。然后该任务将在该日期之后运行。

要激活您的任务,您还需要启用它:

  <Settings>
    <Enabled>true</enabled>
  </Settings>