我有以下代码:
Invoke-Command -ComputerName $remoteComputerName -Credentials $cred {& c:/program.exe}
如何从program.exe返回rc作为Invoke-Command返回码,特别是当它非零时。?
答案 0 :(得分:1)
默认情况下,Invoke-Command将传回脚本的结果。如果您没有发回任何其他数据,您可以随时执行以下操作:
Invoke-Command -ComputerName $remoteComputerName -Credentials $cred {& c:/program.exe;$lastexitcode}
这应该返回您尝试运行的任何应用程序的退出代码。
答案 1 :(得分:0)
作为TheMadTechnician所说的扩展,您可以将远程计算机中发生的事情插入到PowerShell对象中,您甚至可以使用try {} catch {}将其包装起来,或者只返回$? (与 $ LASTEXITCODE 相同)并将其传递回脚本:
$rc_oporation = Invoke-Command -ComputerName $remoteComputerName -Credentials $cred {& c:/program.exe; $?}
$rc_other_option = Invoke-Command -ComputerName $remoteComputerName -Credentials $cred { try{& c:/program.exe} catch{"there was a problem"} }
现在" $ rc_oporation"将保留你的答案为0表示没有错误的成功
希望有所帮助:)
答案 2 :(得分:0)
在上述之前,我得到了以下工作(感谢themadtechnician):
$s = New-PSSession -Name autobuild -ComputerName <ip address> -Credential $cred
Invoke-Command -Session $s -ScriptBlock {& 'C:\program.exe'}
$rc = Invoke-Command -Session $s -ScriptBlock {$lastexitcode}
if ($rc -ne 0)
{
write-output "run failed ..."
Remove-PSSession -Name autobuild
exit 1
}
else
{
write-output "run complete ..."
Remove-PSSession -Name autobuild
exit 0
}