如何屏蔽PowerShell脚本中grpcurl请求的错误输出
解决PowerShell中屏蔽grpcurl错误输出的问题
因为grpcurl是外部命令行工具,而非PowerShell原生命令,所以-ErrorAction Stop和Try/Catch对它的错误处理不生效——PowerShell的这些错误处理机制只针对自身原生命令,外部工具的错误是通过标准错误流(stderr)和退出码来传递的。
要屏蔽grpcurl的错误输出,可通过以下方式处理:
直接重定向标准错误流到Null
在grpcurl命令末尾添加2>$null,将错误信息直接丢弃:
$GetParameters = grpcurl -plaintext -import-path <path> -proto service.proto <IP>:<port> descriptors./GetParameters 2>$null
可选:忽略退出码引发的PowerShell错误
如果grpcurl返回非0退出码时,PowerShell仍会将其标记为错误(比如在严格模式下),可以临时修改错误偏好设置:
# 临时保存原错误偏好 $originalErrorPref = $ErrorActionPreference $ErrorActionPreference = 'SilentlyContinue' $GetParameters = grpcurl -plaintext -import-path <path> -proto service.proto <IP>:<port> descriptors./GetParameters 2>$null # 恢复原错误偏好 $ErrorActionPreference = $originalErrorPref
额外说明
如果需要后续判断请求是否成功,可通过$LASTEXITCODE变量获取grpcurl的退出码:
- 退出码为0表示请求成功
- 非0则表示请求失败
内容的提问来源于stack exchange,提问作者user17508887
相关产品推荐
相关产品推荐

