如何确保PowerShell单条命令失败时不中断脚本执行?
PowerShell 中等效于
mycommand || true 的实现方法 根据PowerShell版本的不同,有以下几种实现方式:
1. PowerShell 7.0+ 版本
PowerShell 7及以上已经支持||和&&运算符,直接沿用Linux下的写法逻辑即可:
mycommand || $null # 也可以用布尔值$true替代,效果一致 mycommand || $true
2. Windows PowerShell 5.1 及更早版本
旧版本不支持||运算符,可通过以下方式实现需求:
方法一:临时修改错误处理偏好
如果脚本全局启用了严格错误处理(比如设置了$ErrorActionPreference = 'Stop'),可以临时覆盖该配置,执行目标命令后再恢复原有设置:
# 保存原有错误处理配置 $originalErrorAction = $ErrorActionPreference # 临时设置为忽略错误、继续执行 $ErrorActionPreference = 'Continue' & mycommand # 恢复原有错误处理配置 $ErrorActionPreference = $originalErrorAction
方法二:忽略外部命令的退出码(针对exe等外部程序)
如果mycommand是外部可执行程序,PowerShell默认不会因非0退出码终止脚本;若你启用了$PSNativeCommandUseErrorActionPreference = $true(仅PowerShell 7+),可执行命令后显式忽略退出码:
& mycommand # 显式读取退出码,避免触发终止错误 $null = $LASTEXITCODE
补充:针对PowerShell内置cmdlet的处理
如果mycommand是PowerShell内置cmdlet,可直接使用-ErrorAction参数忽略错误:
mycommand -ErrorAction SilentlyContinue # 若需要同时屏蔽错误输出,可追加管道处理 mycommand -ErrorAction SilentlyContinue 2>&1 | Out-Null
内容的提问来源于stack exchange,提问作者Aaron Franke
相关产品推荐
相关产品推荐

