Azure CLI如何链式调用命令并将输出传递给其他Azure命令
Azure CLI 链式调用传递多结果的实现方案
原脚本失效核心原因:
az storage account list返回的是JSON数组结构,而@参数默认仅支持绑定单个输入对象,无法直接解析数组内容。
方案1:跨平台原生CLI方案(推荐)
无需依赖系统工具,Windows、Linux、macOS全环境适用,利用Azure CLI原生的--ids参数批量处理输入:
az storage account list --subscription '<subscription>' --query "[].id" -o tsv | \ az storage account update --ids @- --allow-blob-public-access false
参数说明:
-o tsv会将查询返回的资源ID数组转为每行一个ID的纯文本格式,避免JSON结构解析问题--ids @-表示从管道的标准输入中读取所有资源ID,批量执行更新操作
方案2:类Unix环境xargs方案
适用于Linux、macOS、WSL环境,先提取存储账户名称再逐个调用更新命令:
az storage account list --subscription '<subscription>' --query "[].name" -o tsv | \ xargs -I {} az storage account update --name {} --allow-blob-public-access false
参数说明:
-I {}表示将xargs读取到的每一行存储账户名,替换到命令中的{}占位符位置
注意事项
- 原有自定义
<query>过滤规则可直接保留在az storage account list的query参数中,只需确保最终返回内容是[].name或[].id的数组结构即可 - 若确认筛选结果仅包含1个存储账户,可将query调整为取首个元素属性(例如
[0].name),配合-o tsv后直接使用--name @-也可正常运行
内容的提问来源于stack exchange,提问作者YTKColumba
相关产品推荐
相关产品推荐

