簡體   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