Вывод подсетей Azure со ссылками на присоединенную виртуальную сеть, таблицу маршрутизации и NSG.

В настоящее время я работаю над сценарием, который дает мне выходные данные каждой подсети в подписке Azure со ссылками на виртуальную сеть, NSG и таблицу маршрутов. Имя таблицы маршрутов в настоящее время отсутствует в сценарии, но я хочу сосредоточиться на исправлении NSG прямо сейчас. Вот как выглядит мой скрипт:

$VNets = Get-AzVirtualNetwork $NSG = Get-AzNetworkSecurityGroup $VNets | ForEach-Object { $VNettemp = $_ $result = $_.Subnets | Select-Object @{Label=»Subnet Name»;Expression={$_.Name}},@{Label=»Subnet»;Expression={$_.AddressPrefix}} $_ | ForEach-Object { $result | Add-Member -Name «VNet Name» -Value $_.Name -MemberType NoteProperty } if ($_.Subnets.NetworksecurityGroup -ne «null»){ $NSG | ForEach-Object{ if ($VNettemp.Subnets.Id -contains $_.Subnets.Id ){ $result | Add-Member -Name «NSG Name» -Value $_.name -MemberType NoteProperty -Force } } } return $result }

Результат выглядит так:

Subnet Name Subnet VNet Name NSG Name ———— —— ——— ——— default-subnet 10.10.10.0/28 vnet-ine-test test-nsg vnet-ine-test-snet-test 10.10.0.0/24 vnet-ine-test test-nsg default 10.0.0.0/24 vnet-chn-docker vnet-chn-docker-nsg vnet-test-subnet 10.0.1.0/24 vnet-chn-docker vnet-chn-docker-nsg

Желаемый результат будет выглядеть так, потому что к ‘default-subnet’ и ‘vnet-test-subnet’ не подключена сеть безопасности сети:

Subnet Name Subnet VNet Name NSG Name ———— —— ——— ——— default-subnet 10.10.10.0/28 vnet-ine-test vnet-ine-test-snet-test 10.10.0.0/24 vnet-ine-test test-nsg default 10.0.0.0/24 vnet-chn-docker vnet-chn-docker-nsg vnet-test-subnet 10.0.1.0/24 vnet-chn-docker

Кто-нибудь знает, как исправить вывод? Я попробовал это с помощью оператора else, который заполняет пустое значение для имени NSG, но затем имя полностью отменяется для всей виртуальной сети. Спасибо за помощь!

Источник: ledsshop.ru

Стиль жизни - Здоровье!