Выполните код Powershell на удаленном компьютере, а затем используйте результат на локальном компьютере. - PullRequest
0 голосов
/ 16 ноября 2018

Я знаю, что для выполнения кода на удаленном компьютере я должен использовать -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 {"

1 Ответ

0 голосов
/ 16 ноября 2018
$diskSpace = 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 
    }
}

Обратите внимание на $ diskSpace перед Invoke-Command.Это должно сработать!

...