Powershell相当于Perl的$ CHILD_ERROR

时间:2019-03-08 16:03:37

标签: windows powershell perl exit exit-code

我基本上需要Powershell中执行给定字符串的功能(它可以是CMD / Powershell命令,带有参数的perl / python / powershell或带有参数的exe等),以捕获其退出值。 在perl中,我将字符串传递给'system()'并使用'$ CHILD_ERROR'perlval并将其移位以访问退出代码。

在powershell中,我一无所知。

我尝试使用Invoke-Expression,但是即使传递给Invoke-Expression的表达式失败,Invoke-Expression调用本身也会成功。

1 个答案:

答案 0 :(得分:2)

您可以使用 $ LASTEXITCODE 从外部程序获取退出代码,或者使用布尔值 $?检查上一个操作是否成功。从PowerShell控制台运行 Get_Help about_Automatic_Variables -ShowWindow ,以了解更多详细信息。

在运行外部程序时,您可能想签出(调用)命令,以代替 Invoke-Expression 。从PowerShell控制台运行 Get_Help about_Automatic_Variables -ShowWindow 以获得详细信息。

还请记住,您可能可以不使用上面的命令之一而仅调用外部程序。请参见下面的示例:

param($Hostname="127.0.0.1", $Tries=1, $Wait=1000)
$output = ping.exe $Hostname -n $Tries -w $Wait # captures anything written to stdout
$output|? {$_ -match 'Request timed out'}|Write-Warning
$LASTEXITCODE # returns the exit code from ping.exe

您可以将其复制到test.ps1文件,然后从PowerShell控制台窗口(例如。\ test.ps1 8.8.8.8)运行它,以了解其工作原理。