Come posso modificare un'operazione pianificata esistente utilizzando Powershell?

Sto lavorando su alcuni script di automazione di rilascio che utilizzano Powershell per aggiornare le attività pianificate esistenti che eseguono diverse applicazioni. Nel mio script, posso impostare l'Indice di path e di lavoro dell'applicazione, ma non sembra salvare le modifiche all'attività.

function CreateOrUpdateTaskRunner { param ( [Parameter(Mandatory = $TRUE, Position = 1)][string]$PackageName, [Parameter(Mandatory = $TRUE, Position = 2)][Version]$Version, [Parameter(Mandatory = $TRUE, Position = 3)][string]$ReleaseDirectory ) $taskScheduler = New-Object -ComObject Schedule.Service $taskScheduler.Connect("localhost") $taskFolder = $taskScheduler.GetFolder('\') foreach ($task in $taskFolder.GetTasks(0)) { # Check each action to see if it references the current package foreach ($action in $task.Definition.Actions) { # Ignore actions that do not execute code (eg send email, show message) if ($action.Type -ne 0) { continue } # Ignore actions that do not execute the specified task runner if ($action.WorkingDirectory -NotMatch $application) { continue } # Find the executable $path = Join-Path $ReleaseDirectory -ChildPath $application | Join-Path -ChildPath $Version $exe = Get-ChildItem $path -Filter "*.exe" | Select -First 1 # Update the action with the new working directory and executable $action.WorkingDirectory = $exe.DirectoryName $action.Path = $exe.FullName } } } 

Finora non sono riuscito a trovare una function di salvataggio evidente nella documentazione ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa383607(v=vs.85).aspx ). Sto facendo l'approccio sbagliato qui e devo confondere con il task XML?

One Solution collect form web for “Come posso modificare un'operazione pianificata esistente utilizzando Powershell?”

Il metodo RegisterTask ha un flag di aggiornamento che si desidera utilizzare. Qualcosa come questo:

 # Update the action with the new working directory and executable $action.WorkingDirectory = $exe.DirectoryName $action.Path = $exe.FullName #Update Task $taskFolder.RegisterTask($task.Name, $task.Definition, 4, "<username>", "<password>", 1, $null) 

Vedere l'articolo msdn per i dettagli su ciascun parametro.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.