Я знаю, что для выполнения кода на удаленном компьютере я должен использовать -ArgumentList и param для передачи переменных на удаленный хост.
Может кто-нибудь подсказать мне, как выполнить код на удаленном компьютере, а затем использовать результат на локальном компьютере?
Мой код для определения свободного места на удаленном компьютере и, в зависимости от результата, - сбой сборки, если на удаленном хосте недостаточно места:
$securePassword = ConvertTo-SecureString $env:password -AsPlainText -force
$credential = New-Object System.Management.Automation.PsCredential("$env:login",$securePassword)
Invoke-Command -ComputerName $env:SERVER -credential $credential -scriptblock {
$freespace = Get-PSDrive D
echo $freespace.Free
$DiskDSpace = ($freespace.Free)
If ($DiskDSpace -lt 214748364809999999999999) {
echo "Free space on disk D is less than 20 GB"
$LastExitCode = 1
exit $LastExitCode
}
}
Проблема в том, что $DiskDSpace
значение переменной присутствует только на удаленном компьютере, и Jenkins терпит неудачу только при сборке, если "$LastExitCode = 1"
& "exit $LastExitCode"
выполнено за пределами "-scriptblock {"