PowerShell更新现有计划任务触发器的开始日期和时间

时间:2018-10-25 19:53:19

标签: powershell scheduled-tasks

我正在尝试编写一个脚本,该脚本将更新现有任务的触发时间。例如,将开始时间从12am更改为3am。它还需要能够禁用/启用我当前能够执行的任务。这是我目前拥有的。

$servers = gc .\servers.txt

$servers | ForEach-Object {
    $srv = $_
    $schedule = New-Object -Com ("Schedule.Service")
    $schedule.Connect("$srv")
    $tasks = $schedule.GetFolder("\").GetTasks(0)
    $totaltasks = $tasks | where {($_.Name -match $matching1)} #-or ($_.Name -match $matching2)}
    $totaltasks | ForEach-Object {
        if ($status -eq "Disable") {
            $_.Trigger = $triggertime #Daily At 3am
            #$_.Triggers.StartBoundary = "2011-10-01T04:00:00"
            #$_.Enabled = $false
            Write-Host "Disabled Task "$_.Name" for server $srv" -ForegroundColor Yellow
        }

        if ($status -eq "Enable") {
            $_.Enabled = $true
            $_.Triggers.StartBoundary = "2011-10-01T04:00:00 #<--- Does not work
            Write-Host "Enabled Task "$_.Name" for server $srv" -ForegroundColor Green
        }

2 个答案:

答案 0 :(得分:0)

至于您问题的核心...

  

我正在尝试编写一个将更新触发时间的脚本   用于现有任务。

为什么不为此示例使用内置cmdlet?

Set-Scheduled​Task 模块:预定任务 修改计划的任务。

示例1:修改计划任务中的触发器

$Time = New-ScheduledTaskTrigger -At 12:00 -Once
Set-ScheduledTask -TaskName "SoftwareScan" -Trigger $Time
TaskPath                          TaskName 
--------                          -------- 
\                                 SoftwareScan

答案 1 :(得分:0)

使用以下日期格式:

$_.Triggers.StartBoundary = ('{0:yyyy-MM-dd HH:mm:ss'} -f (Get-Date '10/01/2019 12:33AM'))
# Your Datetime string formatting should expand to: 2019-10-01 00:33:00