我尝试使用 Azure CLI 对 Azure 现有环境进行一些更改。对于成功的请求,我可以使用“--query”提取所需的详细信息,但对于失败的请求,我无法捕获变量的输出。
例如:
az group show -n "rgname"
输出:(ResourceGroupNotFound)找不到资源组“rgname”
如何捕获此错误输出到变量。
PowerShell 将消息写入您可以重定向的不同流。 g。到标准输出流:
$output = (az group show -n "rgname" 2>&1)
现在
$output
将包含错误消息和常规输出。
或者,您可以将错误消息重定向到文件:
az group show -n "rgname" 2>error.log
程序执行时,会按顺序打开三个文件句柄:stdin、stdout和stderr。这些文件句柄有数字:0、1 和 2。这将有助于解释 2>&1 的作用(将 stderr 重定向到 stdout)。
大多数程序(但不是全部)都会将错误消息写入 stderr。
将 stderr 捕获到变量:
error=$(myprogram 2>&1 > /dev/null)
该示例首先将 stdout 重定向到 /dev/null,然后将 stderr 重定向到 stdout。然后,该输出被捕获在变量 error 中。
如果您还想捕获正常的 stdout 消息:
error=$({myprogram > tmpfile;} 2>&1)
messages=$(<tmpfile)
rm tmpfile