0

我知道,要在远程计算机上执行代码,我必须使用 -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 {"

4

1 回答 1

1
$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 
    }
}

注意 Invoke-Command 之前的 $diskSpace。这应该可以解决问题!

于 2018-11-16T09:50:37.570 回答