我有一个在
Windows Server 2008 R2上运行的Web应用程序,它具有大量计划任务,可以处理所有后端内容.当我进行涉及数据库的软件部署时,我需要禁用所有计划任务.目前我有一个很长的清单,我需要手动逐步完成,在我去的时候禁用每个计划的任务 – 这肯定是Powershell自动化的工作成熟.
不幸的是,Powershell文档对于如何禁用现有的计划任务似乎相当腼腆(当然,一旦发布成功完成后重新启用它).我可以获得已准备好,正在运行或已禁用的任务列表,但下一步是什么?
您可以使用基于COM的
Task Scheduler Scripting objects:
原文链接:https://www.f2er.com/windows/370278.html($TaskScheduler = New-Object -ComObject Schedule.Service).Connect("localhost") $MyTask = $TaskScheduler.GetFolder('\').GetTask("My Task") $MyTask.Enabled = $false
要再次启用该任务:
$MyTask.Enabled = $true
以上只有在shell升级并且您是服务器上的本地管理员时才有效.您可以使用上面的代码创建自己的cmdlet:
function Disable-ScheduledTask { param([string]$TaskName,[string]$ComputerName = "localhost" ) $TaskScheduler = New-Object -ComObject Schedule.Service $TaskScheduler.Connect($ComputerName) $TaskRootFolder = $TaskScheduler.GetFolder('\') $Task = $TaskRootFolder.GetTask($TaskName) if(-not $?) { Write-Error "Task $TaskName not found on $ComputerName" return } $Task.Enabled = $False }