如何在PowerShell中执行Azure命令不输出错误且不导致流水线报错
解决PowerShell调用az cli时隐藏错误输出的方法
你遇到的问题本质是az cli 属于外部可执行程序,并非PowerShell原生Cmdlet,它的错误信息会直接输出到标准错误流(stderr),PowerShell默认会把stderr内容打印到控制台,流水线任务会识别到错误输出判定任务失败。
可以通过PowerShell的标准流重定向操作符解决问题,具体方案如下:
核心实现代码
直接在az命令末尾添加2>$null重定向丢弃stderr流的内容,既不会打印错误信息,也不会影响正常返回值的获取:
# 去掉多余的$(),添加2>$null丢弃错误输出 $value = az appconfig kv show -n ThisisEnv --key thisisconfigkey 2>$null | ConvertFrom-Json
补充异常处理逻辑
如果需要针对key不存在的情况做自定义处理,可以结合$LASTEXITCODE变量判断az命令的执行结果,该变量会保存外部程序的退出码,az执行成功时返回0,失败(如key不存在)时返回非0值:
$value = az appconfig kv show -n ThisisEnv --key thisisconfigkey 2>$null | ConvertFrom-Json if ($LASTEXITCODE -ne 0) { # 此处写你的自定义逻辑,比如赋值默认值,不会触发流水线错误 $value = [PSCustomObject]@{ value = "你的默认配置值" } Write-Host "配置key不存在,已使用默认值" }
注意事项
不要使用-ErrorAction SilentlyContinue参数,该参数仅对PowerShell原生Cmdlet生效,对az等外部可执行程序无效。
内容的提问来源于stack exchange,提问作者Anirudha Gupta
相关产品推荐
相关产品推荐

