У меня есть задание Jenkins, которое вызывает скрипт PowerShell с некоторыми параметрами.Параметрами всегда являются запуск / останов, а затем количество включенных / выключенных тестовых машин на селен.Примеры:
powershell.exe -File gridControl.ps1 start grid1 grid2 grid3
powershell.exe -File gridControl.ps1 stop grid4 grid6 grid7
Сценарий недавно работал нормально, пока нас не попросили добавить тайм-аут, так как иногда его часть зависала.Проблема в том, что для добавления времени ожидания мы инкапсулировали все это в функцию, чтобы мы могли запустить ее как задание и рассчитать время.
Это означает, что нам также необходимо было проанализировать аргументы в функции.Я сделал это после передачи переменной Powershell в start-job
Моя проблема в том, что моя первая переменная потерялась.Вот код (который не включает фактический запуск / останов машины. Он просто подключается к VCS и пытается распечатать мои аргументы):
Write-Host " gridControl - Started"
$timeoutSeconds = 60
$code =
{
param($args)
$vcenter = "vc-3dc-v01.redacted.local"
$delaysec = 120
$toolsdelayCheck = 30
$looprepeats = 10
$toolsrunningDelay = 60
$emailTo = @('redacted@zetta.bg', 'redacted@finanalytica.com')
Write-Host " Connecting to VCenter..."
Add-PSSnapin VMware.VimAutomation.Core -WarningAction SilentlyContinue | Out-Null
Connect-VIServer -Server $vcenter -WarningAction SilentlyContinue -Verbose
if(!$?){
Write-Host "Could not connect to VCenter"
}
else{
Write-Host "Successfully connected to vCenter"
}
Write-Host $args[0]
Write-Host $args[1] $args[2] $args[3]
Write-Host " gridControl - Ready to finish"
Disconnect-VIServer -Server $vcenter -Confirm:$false -Force:$true -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host " VIServer Disconnected"
Remove-PSSnapin VMware.VimAutomation.Core
}
$j = Start-Job -ScriptBlock $code -Arg $args
Write-Host " cp2"
if (Wait-Job $j -Timeout $timeoutSeconds) { Receive-Job $j }
Write-Host " cp3"
Remove-Job -force $j
Write-Host " gridControl - Terminate"
Важным является вывод, который я получаю с
Write-Host $args[0]
Write-Host $args[1] $args[2] $args[3]
Что такое:
15:05:49 grid1
15:05:49 grid2 grid3
Когда должно быть
15:05:49 start
15:05:49 grid1 grid2 grid3
Есть идеи, почему это так?