Estoy trabajando en algunos scripts de automatización de versiones que usan Powershell para actualizar las tareas programadas existentes que ejecutan varias aplicaciones. En mi script, puedo configurar la ruta y el directorio de trabajo de la aplicación, pero no parece guardar los cambios en la tarea.
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 (e.g. 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
}
}
}
Hasta ahora no he podido encontrar una función Guardar obvia en la documentación ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa383607(v=vs.85).aspx ). ¿Estoy tomando el enfoque equivocado aquí y necesito perder el tiempo con la tarea XML?
Versión 2.0 (vea serverfault.com/questions/666671/… para algunos de mis problemas relacionados con verson!). Si su solución funciona con una versión posterior de Powershell que es compatible con Server 2008 R2, eso me dará un "empuje" adicional para actualizar los servidores :-)
—
David Keaveny
Server 2008R2 admite hasta 4.0 actualmente. Consulte los requisitos de Windows PowerShell: technet.microsoft.com/en-us/library/hh847769.aspx
—
Davidw
Get-Host
para averiguarlo.