Windows-Server-2008-R2
如何使用 Powershell 禁用計劃任務?
我有一個在 Windows Server 2008 R2 上執行的 Web 應用程序,它有大量的計劃任務來處理所有後端的事情。當我進行涉及數據庫的軟體部署時,我需要禁用所有計劃任務。目前,我有一個很長的清單,我需要手動逐步完成,並在執行過程中禁用每個計劃任務 - 當然,這對於使用 Powershell 進行自動化來說已經成熟。
不幸的是,Powershell 文件似乎對如何禁用現有的計劃任務(當然,一旦成功完成發布就重新啟用它)相當含糊。我可以獲得準備好的、正在執行或禁用的任務的列表,但接下來呢?
您可以使用基於 COM 的任務計劃程序腳本對象:
($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 }