Я работаю над некоторыми сценариями автоматизации выпуска, которые используют Powershell для обновления существующих запланированных задач, которые выполняют различные приложения. В моем сценарии я могу установить путь и рабочий каталог приложения, но, похоже, он не сохраняет изменения обратно в задачу.
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
}
}
}
До сих пор я не смог найти очевидную функцию сохранения в документации ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa383607(v=vs.85).aspx ). Я использую неправильный подход, и мне нужно возиться с задачей XML?
Версия 2.0 (см. Serverfault.com/questions/666671/… для некоторых моих проблем, связанных с версоном!). Если ваше решение работает с более поздней версией Powershell, которая поддерживается Server 2008 R2, тогда это даст мне дополнительный «толчок» для обновления серверов :-)
—
David Keaveny
Сервер 2008R2 поддерживает до 4.0 в настоящее время. См. Требования Windows PowerShell: technet.microsoft.com/en-us/library/hh847769.aspx
—
Davidw
Get-Host
чтобы узнать.