忽略特定行的 powershell 脚本失败

Ignoring powershell script failure for a particular line

我有一个定义 $ErrorActionPreference = "Stop"
的 powershell 脚本 但我也有一个 start-process 调用,目标是 returns 一个非标准的成功退出代码(1 而不是 0)的进程。 因此,即使启动过程正常,脚本也会失败。 我试图在 start-process 调用中附加 -ErrorAction "Continue" 参数,但它没有解决问题。

有问题的行如下所示:

$ErrorActionPreference = "Stop"
...
start-process "binary.exe" -Wait -ErrorAction "Continue"
if ($LastExitCode -ne 1)
{
   echo "The executable failed to execute properly."
   exit -1
}
...

如何防止启动进程使整个脚本失败。

Start-Process 不更新 $LASTEXITCODE。 运行 Start-Process-PassThru 参数一起获取进程对象,并评估该对象的 ExitCode 属性:

$ErrorActionPreference = "Stop"
...
$p = Start-Process "binary.exe" -Wait -PassThru
if ($p.ExitCode -ne 1) {
  echo "The executable failed to execute properly."
  exit -1
}