忽略特定行的 powershell 脚本失败
Posted
技术标签:
【中文标题】忽略特定行的 powershell 脚本失败【英文标题】:Ignoring powershell script failure for a particular line 【发布时间】:2015-06-12 15:03:57 【问题描述】:我有一个定义 $ErrorActionPreference = "Stop"
的 powershell 脚本
但我也有一个start-process
调用,该调用针对一个在成功时返回非标准退出代码(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
...
如何防止启动过程使整个脚本失败。
【问题讨论】:
你有没有试过在上一行设置$ErrorActionPreference = "silentlycontinue"
,然后在下一行设置$ErrorActionPreference = "Stop"
?
【参考方案1】:
Start-Process
不会更新 $LASTEXITCODE
。使用-PassThru
参数运行Start-Process
以获取进程对象,并评估该对象的ExitCode
属性:
$ErrorActionPreference = "Stop"
...
$p = Start-Process "binary.exe" -Wait -PassThru
if ($p.ExitCode -ne 1)
echo "The executable failed to execute properly."
exit -1
【讨论】:
谢谢!完美运行!以上是关于忽略特定行的 powershell 脚本失败的主要内容,如果未能解决你的问题,请参考以下文章
Windows 主机上的 GitHub Actions(powershell?):前几行的退出代码被忽略
用于包装嘈杂的python脚本并使用sed删除特定行的shell命令问题[重复]