繁体   English   中英

使用 Powershell CLI 获取 Azure VM 的 NSG

[英]Get Azure VM's NSG Using Powershell CLI

任务是修改 Azure 网络安全组规则。

我在那里一切正常(使用 az network nsg rule update ),提供 NSG 的名称和实际规则。

但是我想要做的是使用 VM 名称(订阅 ID、RG 名称和规则名称已知并且将是明确的)作为输入参数来编辑该规则。

我正在使用 az(不是 Az)命令。

我看到的是 az vm show,但它没有显示 VM 连接到哪个 NSG。

我想问一下如何使用 CLI 获取与 VM 关联的 NSG 名称。 直接的答案、指南或资源链接都将受到赞赏。

谢谢你,提前谢谢!

按照下面的 Microsoft 文档进行操作

https://docs.microsoft.com/en-us/powershell/module/az.network/get-aznetworksecuritygroup?view=azps-6.5.0

Get-AzNetworkSecurityGroup [-Name <String>][-ResourceGroupName<String> [-DefaultProfile <IAzureContextContainer>][<CommonParameters>]

您还需要提供 VM 所在的资源组 - 这就是它能够区分不同资源组中具有相同名称的两个 VM 的方式。 此处, {id:id}创建了一个可用于后续命令的映射。 还有其他方法可以做到这一点,但我更喜欢这种方法,因为我更熟悉这种格式。

你可以这样做:

  1. 使用 VM 名称和 RG,获取 VM 的 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
  1. 使用 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
  1. 最后,使用子网 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM