Выходные данные пиринга Azure

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

Peering Name     VNet 1          VNet 2          AllowVirtualNetworkAccess AllowForwardedTraffic UseRemoteGateways AllowGatewayTransit                                    
------------     ------          ------          ------------------------- --------------------- ----------------- -------------------
test-peering     vnet-ine-test   vnet-chn-docker False                     True                  False             False
vnet-docker-test vnet-chn-docker vnet-ine-test   True                      True                  False             False

Вот как сейчас выглядит мой скрипт:

$VNets = Get-AzVirtualNetwork
$peerings=@()
$peeringInfo = @{ "Peering Name" = "" ; "VNet 1" = "" ; "VNet 2" = "" ; "AllowVirtualNetworkAccess" = "" ; "AllowForwardedTraffic" = "" ; "UseRemoteGateways" = "" ; "AllowGatewayTransit" = ""}
foreach($VNet in $VNets){
   $peeringInfo.'Peering Name'=$VNet.VirtualNetworkPeerings.Name
   $peeringInfo.'AllowVirtualNetworkAccess'=$VNet.VirtualNetworkPeerings.Name
   $peeringInfo.'AllowForwardedTraffic'=$VNet.VirtualNetworkPeerings.Name
   $peeringInfo.'UseRemoteGateways'=$VNet.VirtualNetworkPeerings.Name
   $peeringInfo.'AllowGatewayTransit'=$VNet.VirtualNetworkPeerings.Name
   $peering = Get-AzVirtualNetworkPeering -VirtualNetworkName $VNet.Name -ResourceGroupName $VNet.ResourceGroupName
   foreach($peer in $peering){
        $peeringInfo.'VNet 1' =$peer.VirtualNetworkName
        $peeringInfo.'VNet 2' =(Get-AzVirtualNetwork -Name $peer.RemoteVirtualNetwork.Id).Name
        $obj=New-Object PSObject -Property $peeringInfo
        $peerings +=$obj
   }

  
}
$peerings | Format-Table "Peering Name","VNet 1","VNet 2",AllowVirtualNetworkAccess,AllowForwardedTraffic,UseRemoteGateways,AllowGatewayTransit

И это вывод:

Peering Name     VNet 1          VNet 2                           AllowVirtualNetworkAccess AllowForwardedTraffic UseRemoteGateways AllowGatewayTransit
------------     ------          ------                           ------------------------- --------------------- ----------------- -------------------
test-peering     vnet-ine-test   {vnet-ine-test, vnet-chn-docker} test-peering              test-peering          test-peering      test-peering       
vnet-docker-test vnet-chn-docker {vnet-ine-test, vnet-chn-docker} vnet-docker-test          vnet-docker-test      vnet-docker-test  vnet-docker-test  

Я знаю, что проблема должна что-то делать со строкой $peeringInfo.'VNet 2' =(Get-AzVirtualNetwork -Name $peer.RemoteVirtualNetwork.Id).Name, потому что, когда я просто запускаю (Get-AzVirtualNetwork -Name $peer.RemoteVirtualNetwork.Id).Name, есть два выхода, что странно, потому что $peer.RemoteVirtualNetwork.Id может быть только одним значением.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, я нашел ответ. На самом деле это была линия $peeringInfo.'VNet 2' =(Get-AzVirtualNetwork | Where-Object ID -EQ $peer.RemoteVirtualNetwork.Id).Name. Теперь он был изменен на Where-Object для сравнения идентификатора вместо поиска имени. Вот полный скрипт:

$VNets = Get-AzVirtualNetwork
$peerings=@()
$peeringInfo = @{ "Peering Name" = "" ; "VNet 1" = "" ; "VNet 2" = "" ; "AllowVirtualNetworkAccess" = "" ; "AllowForwardedTraffic" = "" ; "UseRemoteGateways" = "" ; "AllowGatewayTransit" = ""}
foreach($VNet in $VNets){
    $peeringInfo.'Peering Name'=$VNet.VirtualNetworkPeerings.Name
    $peeringInfo.'AllowVirtualNetworkAccess'=$VNet.VirtualNetworkPeerings.AllowVirtualNetworkAccess
    $peeringInfo.'AllowForwardedTraffic'=$VNet.VirtualNetworkPeerings.AllowForwardedTraffic
    $peeringInfo.'UseRemoteGateways'=$VNet.VirtualNetworkPeerings.UseRemoteGateways
    $peeringInfo.'AllowGatewayTransit'=$VNet.VirtualNetworkPeerings.AllowGatewayTransit
    $peering = Get-AzVirtualNetworkPeering -VirtualNetworkName $VNet.Name -ResourceGroupName $VNet.ResourceGroupName
    foreach($peer in $peering){
        $peeringInfo.'VNet 1' =$peer.VirtualNetworkName
        $peeringInfo.'VNet 2' =(Get-AzVirtualNetwork | Where-Object ID -EQ $peer.RemoteVirtualNetwork.Id).Name
        $obj=New-Object PSObject -Property $peeringInfo
        $peerings +=$obj
   }

  
}
$peerings | Format-Table "Peering Name","VNet 1","VNet 2",AllowVirtualNetworkAccess,AllowForwardedTraffic,UseRemoteGateways,AllowGatewayTransit

И вот результат:

Peering Name     VNet 1          VNet 2          AllowVirtualNetworkAccess AllowForwardedTraffic UseRemoteGateways AllowGatewayTransit
------------     ------          ------          ------------------------- --------------------- ----------------- -------------------
test-peering     vnet-ine-test   vnet-chn-docker                     False                  True             False               False
vnet-docker-test vnet-chn-docker vnet-ine-test                        True                  True             False               False 

Другие вопросы по теме