Modifier une tâche planifiée avec PowerShell

1

Comment puis-je modifier l'étape d'action dans une tâche planifiée? Des centaines de tâches planifiées pointent vers un chemin particulier et exécutent un script PowerShell. Comment pouvons-nous trouver ces tâches et ensuite changer le chemin dans l'étape d'action sans supprimer ni recréer la tâche entière?

Michael
la source
Exportez les tâches au format .xml, exécutez find + replace, puis importez les tâches.
Wutnaut
J'ai vu que vous aviez des centaines de tâches planifiées et que le module des tâches planifiées ne vous permettait d'exporter qu'une tâche à la fois. Vous pourrez donc trouver cette ressource pratique, d'autant plus que vous travaillez déjà dans PS: petri.co.il /export-scheduled-tasks-using-powershell.htm
Wutnaut Le

Réponses:

1

Les tâches planifiées sont contenues dans C: \ Windows \ System32 \ Tasks \ et contiennent des fichiers XML. L'article de Petri est une bonne solution pour Windows 8 et Windows Server 2012, mais ce n'est pas une solution complète. Cela devrait vous permettre de rechercher les tâches avec une commande ou un argument spécifique et de les remplacer.

$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)
    }
Tim Ferrill
la source