任务是修改 Azure 网络安全组规则。
只要提供 NSG 的名称和实际规则,我就可以了(使用 az network nsg 规则更新)。
但我想要做的是使用 VM 名称(订阅 ID、RG 名称和规则名称已知并且将是明确的)作为输入参数来编辑该规则。
我正在使用 az(不是 Az)命令。
我看到的是 az vm show,但它没有显示虚拟机连接到哪个 NSG。
我想问如何使用 CLI 获取与虚拟机关联的 NSG 名称。直接的答案、指南或资源链接都将受到赞赏。
谢谢您,提前致谢!
最佳答案
您还需要提供虚拟机所在的资源组 - 这样才能区分不同资源组中具有相同名称的两个虚拟机。此处,{id:id}
创建一个可与后续命令一起使用的 map 。还有其他方法可以做到这一点,但我更喜欢这种方法,因为我更熟悉这种格式。
您可以执行以下操作:
- 使用虚拟机名称和 RG,获取虚拟机的 NIC ID 并将其保存到
nic_id
:
vm_name="myvm"
vm_rg="myrg"
nic_id=`az vm nic list -g $vm_rg --vm-name $vm_name --query "[].{id:id}"`
# echo to make sure we're getting the right value.
echo $nic_id
- 使用 NIC ID 获取子网 ID
snet_id=`az network nic show --ids $nic_id --query "ipConfigurations[0].subnet.{id:id}"`
# echo to make sure we're getting the right value.
echo $snet_id
- 最后,使用子网 ID 获取 NSG 的名称
nsg_name=`az network vnet subnet show --ids $snet_id --query networkSecurityGroup.{id:id} -o tsv | sed 's/^.*networkSecurityGroups\///'`
# echo to make sure we're getting the right value.
echo $nsg_name
关于azure - 使用 Powershell CLI 获取 Azure VM 的 NSG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69654822/