Powershell计划任务未删除

时间:2018-10-12 16:37:01

标签: powershell scheduled-tasks

运行以下命令将创建任务并具有正确的设置。 “如果未计划任务再次运行,则将其设置为50秒后将其删除。该命令大约需要运行10秒钟。问题在于,它实际上从未从任务计划程序中删除任务。

$run = (Get-Date).AddMinutes(1) # Two minutes from now
Register-ScheduledTask -TaskName $taskname -InputObject (
  (
    New-ScheduledTask -Action (
      New-ScheduledTaskAction -Execute "powershell.exe" -Argument ( 
"C:\Send-HipchatNotification.ps1 -room '$room' -message '$message' -color 
'purple' -notify"       
      )
    ) -Trigger (
      New-ScheduledTaskTrigger -Once -At ($run.TimeOfDay.ToString("hh\:mm")) 
# As a "TimeOfDay" to get 24Hr format
   ) -Settings (
      New-ScheduledTaskSettingsSet  -DeleteExpiredTaskAfter 00:00:50 # 
Delete one second after trigger expires
    ) 
  ) | %{ $_.Triggers[0].EndBoundary = $run.AddMinutes(60).ToString('s') ; $_ 
} # Run through a pipe to set the end boundary of the trigger
)`

1 个答案:

答案 0 :(得分:1)

因此,我一直在测试脚本中的异常情况,发现Task Scheduler中可能存在错误。

我注意到,一旦触发器过期,如果您执行

Set-ScheduledTask $taskname

任务被删除。否则,如果任务被搁置,它将在内存中留下鬼对象。

此外,如果您进入Task Scheduler GUI,并在任务到期后尝试编辑该任务,则会给您一个错误,指出Task不存在,并且会无限期地将其自身从内存中删除(大概直到重新启动后为止,但是我还没有测试那么远。

我不确定是否已报告此错误,但要解决此问题,您可能需要在其过期后运行Set-ScheduledTask才能删除任务对象。