Вывод подсетей 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, но затем имя полностью отменяется для всей виртуальной сети. Спасибо за помощь!

См. также:  Параметризация azureSubscription из группы переменных в конвейере yaml
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Tedlix

    Что касается проблемы, обратитесь к следующему сценарию

    $VNets = Get-AzVirtualNetwork
    $NSG = Get-AzNetworkSecurityGroup
    [email protected]()
    $info = @{ "Subnet Name"=""; "Subnet"=""; "VNet Name"="" ; "NSG Name"=""}
    foreach($VNet in $VNets){
       $info.'VNet Name'=$VNet.Name
       $info.'NSG Name'=$null
       Foreach($sub in $VNet.Subnets){
         $info.'Subnet Name' =$sub.Name
         $info.Subnet=$sub.AddressPrefix
         if($sub.NetworkSecurityGroup -ne $null){
             $NSG | ForEach-Object{
                if ($VNet.Subnets.Id -contains $_.Subnets.Id ){
                    $info.'NSG Name'=$_.Name
                }
            }
         
         }
          $obj=New-Object PSObject -Property $info
          $resports +=$obj
    
       }
    
      
    }
    

    введите описание изображения здесь

    Большое тебе спасибо. Все прошло безупречно, за исключением GatewaySubnet, который просто взял NSG и таблицу маршрутизации из предыдущей подсети. Исправлено добавлением оператора else: `else {$ NSG | ForEach-Object {if ($ VNet.Subnets.Id -contains $ _. Subnets.Id) {$ subnetInfo.’NSG Name ‘=}}} `Есть ли способ удалить фигурные скобки подсети? person Tedlix; 24.12.2020

    Обнаружено другое исправление для информации о NSG или таблице маршрутов: вы должны поместить $subnetInfo.'NSG Name'=$null или $subnetInfo.'Routing Table'=$null в foreach($sub in $VNet.Subnets){ person Tedlix; 24.12.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: