Как я могу отключить использование запланированной задачи Powershell?

У меня есть веб-приложение, которое работает на Windows Server 2008 R2, который имеет большое количество запланированных задач, которые заботятся обо всем материале бэкенда. Когда я делаю развертывание программного обеспечения, которое касается базы данных, я должен отключить все запланированные задачи. В настоящее время у меня есть длинный контрольный список, что я должен ступить через вручную, отключив каждую запланированную задачу, когда я иду - конечно, это - задание, готовое к автоматизации с Powershell.

К сожалению, документация Powershell, кажется, довольно скромна о том, как Вы отключаете существующую запланированную задачу (и конечно, повторно включите ее, после того как выпуск был завершен успешно). Я могу получить список готовых, рабочих или отключенных задач, но что затем?

8
задан 5 June 2014 в 07:12
7 ответов

Если Вы просто пытаетесь остановить ВСЕ задания, возможно, будет проще просто остановить службу планировщика заданий. Модуль Планировщика Задач доступен только в Windows Server 2012, поэтому управление задачами не так просто, как остановка и запуск службы:

Stop-Service Schedule
Start-Service Schedule

Если это не работает для вас schtasks. exe можно использовать из PowerShell для управления отдельными задачами:

schtasks.exe /CHANGE /TN "My Task" /DISABLE
schtasks.exe /CHANGE /TN "My Task" /ENABLE
5
ответ дан 2 December 2019 в 22:43
3
ответ дан 2 December 2019 в 22:43

Lokhu kuphelele! Isebenza kangcono kune-Get-ScheduledTask ngoba ngikwindawo exubile ka-2008/2012. Ngingeze imigqa embalwa ukubuza i-AD futhi ngacela lo myalo ngokumelene neqembu lamakhompyutha. Inhloso yami bekuwukukhubaza umsebenzi wokuvula "Umphathi Weseva" njalo lapho umsebenzisi angena ngemvume. konke kuhambile!

$C=Get-ADComputer -SearchBase 'OU=Computers,dc=domain,dc=com' -Filter * | foreach {$_.name}

Invoke-Command $C {
($TaskScheduler = New-Object -ComObject Schedule.Service).Connect("$C")
$TaskScheduler.GetFolder('\Microsoft\Windows\Folder').GetTasks(0) | % {$_.Enabled = $false}
}
0
ответ дан 2 December 2019 в 22:43

Даже лучше, если вам не нужно указывать имена задач:

($TaskScheduler = New-Object -ComObject Schedule.Service).Connect("localhost")
$TaskScheduler.GetFolder('\').GetTasks(0) | % {$_.Enabled = $false}
3
ответ дан 2 December 2019 в 22:43

Посмотрите на эту функцию

Function Control-Tasks
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true)][String]$FolderPath,
        [Parameter(Mandatory=$true, ParameterSetname='EnableTask')][Switch]$Enable,
        [Parameter(Mandatory=$true, ParameterSetname='DisableTask')][Switch]$Disable,
        [Parameter()]$TaskScheduler,
        [Parameter()][Switch]$Recursive
    )

    If ($TaskScheduler -eq $null) {
        $TaskScheduler = New-Object -ComObject Schedule.Service
        $TaskScheduler.Connect("localhost")
    }

    $curFolder = $TaskScheduler.GetFolder($FolderPath)

    $curFolder.GetTasks(1) | ForEach-Object {
        If ($Enable) {
            $_.Enabled = $True
            Write-Host "Enable $($_.Path)"
        }

        If ($Disable) {
            $_.Enabled = $False
            Write-Host "Disable $($_.Path)"
        }
    }

    If ($Recursive) {
        $curFolder.GetFolders(1)  | ForEach-Object {
            If ($Enable) {
                Control-Tasks -FolderPath $_.Path -Enable -TaskScheduler $TaskScheduler -Recursive
            }
            If ($Disable) {
                Control-Tasks -FolderPath $_.Path -Disable -TaskScheduler $TaskScheduler -Recursive
            }
        }
    }

}

Например, вы можете отключить все задачи в папке "\ mysql", вызвав Control-Tasks -FolderPath "\ mysql" -Disable -Recursive

Эти фрагменты кода взяты из Как отключить / включить запланированное задание в пакетном режиме с помощью PowerShell , вы можете загрузить полный архив примеров здесь .

0
ответ дан 2 December 2019 в 22:43

это сработало для меня

    Get-ScheduledTask -TaskName "TestJob"  | Stop-ScheduledTask
0
ответ дан 3 December 2019 в 09:35

Теги

Похожие вопросы