As tarefas agendadas estão contidas em C: \ Windows \ System32 \ Tasks \ e contêm arquivos XML. Embora o artigo do Petri seja uma boa solução para o Windows 8 e o Windows Server 2012, essa não é uma solução completa. Isso deve permitir que você encontre as tarefas com um comando ou argumento específico e as substitua.
$computer = "localhost"
$oldCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$oldArguments = "-File '"C:\Users\Public\Scripts\oldScript.ps1'""
$newCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$newArguments = "-File '"C:\Users\Public\Scripts\newScript.ps1'""
$tasks = Get-ChildItem "\$computer\c$\Windows\System32\Tasks\" | Where-Object {
$_.PSIsContainer -eq $false '
-and '
(([xml](Get-Content -Path $_.FullName)).Task.Actions.Exec.Command -like $oldCommand) '
-and '
(([xml](Get-Content -Path $_.FullName)).Task.Actions.Exec.Arguments -like $oldArguments)
}
$tasks | ForEach-Object {
$xml = [xml](Get-Content -Path $_.FullName)
$xml.Task.Actions.Exec.Command = $newCommand
$xml.Task.Actions.Exec.Arguments = $newArguments
$xml.Save($_.FullName)
}