azure - 使用 Powershell CLI 获取 Azure VM 的 NSG

标签 azure powershell

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

只要提供 NSG 的名称和实际规则,我就可以了(使用 az network nsg 规则更新)。

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

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

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

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

谢谢您,提前致谢!

最佳答案

您还需要提供虚拟机所在的资源组 - 这样才能区分不同资源组中具有相同名称的两个虚拟机。此处,{id:id} 创建一个可与后续命令一起使用的 map 。还有其他方法可以做到这一点,但我更喜欢这种方法,因为我更熟悉这种格式。

您可以执行以下操作:

  1. 使用虚拟机名称和 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/

    相关文章:

    .net - 使用 powershell 解析逗号分隔的文件

    powershell - 在数组列表中为运行空间注册 ObjectEvent

    powershell - 使用PowerShell的Coinspot API

    sql-server - 使用 SQL Server Management Studio 远程连接到 Azure 虚拟机上托管的 SQL Server Express 实例

    xml - 模糊搜索FIELD azure中的全局列表

    caching - azure共享缓存和新的azure redis缓存有什么区别?

    powershell - 术语 'Invoke-WebRequest' 未被识别为 cmdlet 的名称

    powershell - 禁用-TlsCipherSuite : Exception from HRESULT: 0xD0000225

    azure - 错误: Deployment failed: ERROR_DESTINATION_NOT_REACHABLE when deploying to App Service from Azure DevOps Services

    c# - Azure 网站中的站点无法处理 X509Certificate2