我正在尝试编写一个脚本,该脚本将更新现有任务的触发时间。例如,将开始时间从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
}
答案 0 :(得分:0)
至于您问题的核心...
我正在尝试编写一个将更新触发时间的脚本 用于现有任务。
为什么不为此示例使用内置cmdlet?
Set-ScheduledTask 模块:预定任务 修改计划的任务。
示例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