在远程计算机上执行 Powershell 代码,然后在本地计算机上使用结果
Execute Powershell code on remote computer and then use result on local computer
我知道,要在远程计算机上执行代码,我必须使用 -ArgumentList 和 param 将变量传递给远程主机。
谁能提示我,如何在远程计算机上执行代码,然后在本地计算机上使用结果?
我的代码,用于确定远程计算机上的空闲 space,并且根据结果 - 如果远程主机没有足够的 space:
,则构建失败
$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
变量值仅存在于远程计算机上,如果 "$LastExitCode = 1"
& "exit $LastExitCode"
在 "-scriptblock {"
[=15= 之外执行,Jenkins 仅构建失败]
$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。这应该可以解决问题![=11=]
我知道,要在远程计算机上执行代码,我必须使用 -ArgumentList 和 param 将变量传递给远程主机。
谁能提示我,如何在远程计算机上执行代码,然后在本地计算机上使用结果?
我的代码,用于确定远程计算机上的空闲 space,并且根据结果 - 如果远程主机没有足够的 space:
,则构建失败$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
变量值仅存在于远程计算机上,如果 "$LastExitCode = 1"
& "exit $LastExitCode"
在 "-scriptblock {"
[=15= 之外执行,Jenkins 仅构建失败]
$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。这应该可以解决问题![=11=]