Azure CLI:如何从资源ID获取资源名称?解决NIC查询报错
解决方法
方案1:直接获取NIC名称(推荐)
不用先拿资源ID再转换名称,直接在az vm nic list时就提取NIC名称,修改query参数即可:
vmsList=$(az vm list --show-details --query '[?name!=`null`].[name]' -o tsv) for vm in ${vmsList[@]} do # 直接获取NIC名称而非资源ID nics="$(az vm nic list --vm-name $vm --query '[].name' --output tsv)" for nic in ${nics[@]} do az vm nic show --vm-name $vm --nic $nic --query '{Name:name,Location:location}' -o json done done
方案2:从资源ID中提取NIC名称
如果必须保留获取资源ID的逻辑,可以用Bash的字符串截取功能,从ID中提取最后一段(即NIC名称):
vmsList=$(az vm list --show-details --query '[?name!=`null`].[name]' -o tsv) for vm in ${vmsList[@]} do nics="$(az vm nic list --vm-name $vm --query '[].{id:id}' --output tsv)" for nic in ${nics[@]} do # 截取最后一个/之后的内容,得到NIC名称 nic_name=${nic##*/} az vm nic show --vm-name $vm --nic $nic_name --query '{Name:name,Location:location}' -o json done done
两种方案都能解决az vm nic show需要传入名称而非完整资源ID的问题,方案1更直接高效,减少了额外的字符串处理步骤。
内容的提问来源于stack exchange,提问作者Usama
相关产品推荐
相关产品推荐

