首页 > 解决方案 > Powershell计划任务未删除

问题描述

运行以下命令会创建任务并具有正确的设置。设置了“如果任务未计划再次运行,则在 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
)`

标签: powershellscheduled-tasks

解决方案


因此,我一直在测试您的脚本是否存在异常,发现任务计划程序中可能存在错误。

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

Set-ScheduledTask $taskname

任务被删除。否则,如果任务被单独留下,它将在内存中留下一个幽灵对象。

此外,如果您进入任务计划程序 GUI,并在任务到期后尝试编辑任务,它会给您一个错误,即任务不存在,并将无限期地从内存中删除(大概直到重新启动后,但我没有t 测试了那么远)。

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


推荐阅读