Você pode usar o Script do Agendador de Tarefas baseado em COM. objetos :
($TaskScheduler = New-Object -ComObject Schedule.Service).Connect("localhost")
$MyTask = $TaskScheduler.GetFolder('\').GetTask("My Task")
$MyTask.Enabled = $false
Para ativar a tarefa novamente:
$MyTask.Enabled = $true
O acima só funcionará se o shell for elevado e você for um administrador local no servidor. Você poderia criar seu próprio cmdlet com o seguinte:
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
}