Получение расширенных свойств с другими свойствами

У меня есть сценарий PS, который собирает информацию обо всех шлюзах виртуальной сети Az, но, похоже, возникла проблема с получением имени ресурса. Я получаю имя с красной стрелкой на скриншоте вместо имени с желтой стрелкой.

$gatewayDetailsArray = @()

# Loop through each subscription
#foreach ($subscription in $subscriptions) {
 #   Write-Host "Processing Subscription: $($subscription.Name)" -ForegroundColor Yellow

    # Select the current subscription
  #   Select-AzSubscription -SubscriptionId $subscription.Id

    # Get all resource groups in the current subscription
    $resourceGroups = Get-AzResourceGroup

    # Loop through each resource group to get virtual network gateways
    foreach ($resourceGroup in $resourceGroups) {
       # $gateways = Get-AzVirtualNetworkGateway -ResourceGroupName $resourceGroup.ResourceGroupName  | Select-Object -Property Name, GatewayType, VpnType, Sku -ExpandProperty IpConfigurations

        
       # Loop through each virtual network gateway and add details to the array
        foreach ($gateway in $gateways) {
            $details = @{
                Subscription = $subscription.Name
                ResourceGroupName = $gateway.ResourceGroupName
                Name = $gateway.Name
                GatewayType = $gateway.GatewayType
                VpnType = $gateway.VpnType
                GatewayIP = $gateway.GatewayIpAddress
                SKU = $gateway.Sku.Name
                VNET = ($gateway.subnet.id -split '/')[-3]
            }
            $gatewayDetailsArray += New-Object PSObject -Property $details
        }
    }
#}

# Export the gateway details array to a CSV file
$csvFilePath2 = "C:\temp\GatewayDetails_2.csv"
$gatewayDetailsArray | Export-Csv -Path $csvFilePath2 -NoTypeInformation
Как установить 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
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Чтобы собрать информацию обо всех шлюзах виртуальной сети в вашей подписке, вы можете использовать приведенный ниже модифицированный скрипт:

# $subscriptions = Get-AzSubscription

# Initialize an array to store gateway details
$gatewayDetailsArray = @()

# Loop through each subscription
#foreach ($subscription in $subscriptions) {
 #   Write-Host "Processing Subscription: $($subscription.Name)" -ForegroundColor Yellow

    # Select the current subscription
  #   Select-AzSubscription -SubscriptionId $subscription.Id

    # <span class = " active-doc-0" data-doc-items = "0">Get all resource groups in the current subscription[1](#doc-pos=0)</span>
    $resourceGroups = Get-AzResourceGroup

    # Loop through each resource group to get virtual network gateways
    foreach ($resourceGroup in $resourceGroups) {
        $gateways = Get-AzVirtualNetworkGateway -ResourceGroupName $resourceGroup.ResourceGroupName  | Select-Object -ExpandProperty Name

        
       # <span class = " active-doc-1" data-doc-items = "1">Loop through each virtual network gateway and add details to the array[2](#doc-pos=1)</span>
        foreach ($gateway in $gateways) {
            $details = @{
                Subscription = $subscription.Name
                ResourceGroupName = $resourceGroup.ResourceGroupName
                Name = $gateway
            }
            $gatewayDetailsArray += New-Object PSObject -Property $details
        }
    }
#}

# Output the gateway details
$gatewayDetailsArray | Format-Table -AutoSize

# Export the gateway details array to a CSV file
$csvFilePath2 = "C:\temp\GatewayDetails_2.csv"
$gatewayDetailsArray | Export-Csv -Path $csvFilePath2 -NoTypeInformation

Выход:

В csv файл был экспортирован, как показано ниже:


# $subscriptions = Get-AzSubscription

# Initialize an array to store gateway details
$gatewayDetailsArray = @()

# Loop through each subscription
#foreach ($subscription in $subscriptions) {
 #   Write-Host "Processing Subscription: $($subscription.Name)" -ForegroundColor Yellow

    # Select the current subscription
  #   Select-AzSubscription -SubscriptionId $subscription.Id

    # <span class = " active-doc-0" data-doc-items = "0">Get all resource groups in the current subscription[1](#doc-pos=0)</span>
    $resourceGroups = Get-AzResourceGroup

    # Loop through each resource group to get virtual network gateways
    foreach ($resourceGroup in $resourceGroups) {
        $gateways = Get-AzVirtualNetworkGateway -ResourceGroupName $resourceGroup.ResourceGroupName  | Select-Object -ExpandProperty Name

        
       # <span class = " active-doc-1" data-doc-items = "1">Loop through each virtual network gateway and add details to the array[2](#doc-pos=1)</span>
        foreach ($gateway in $gateways) {
            $details = @{
                Subscription = $subscription.Name
                ResourceGroupName = $resourceGroup.ResourceGroupName
                Name = $gateway
                vpnType = $gateway.VpnType
                GatewayType = $gateway.GatewayType
                SKU = $gateway.Sku.Name
                VNET = ($gateway.subnet.id -split '/')[-3]
            }
            $gatewayDetailsArray += New-Object PSObject -Property $details
        }
    }
#}

# Output the gateway details
$gatewayDetailsArray | Format-Table -AutoSize


$csvFilePath2 = "C:\temp\GatewayDetails_2.csv"
$gatewayDetailsArray | Export-Csv -Path $csvFilePath2 -NoTypeInformation

Обновлять

Мы хотели бы ниже в выводе. Имя шлюза, идентификатор подписки, группа ресурсов, VPNType, имя SKU, идентификатор подсети из IP-конфигураций (см. исходный снимок экрана), чтобы мы могли извлечь сведения о виртуальной сети.

Вы можете использовать приведенную ниже команду, чтобы получить все подробности, как показано ниже:

# Initialize an array to store gateway details
$gatewayDetailsArray = @()

# Get all subscriptions
$subscriptions = Get-AzSubscription

# Loop through each subscription
foreach ($subscription in $subscriptions) {
    Write-Host "Processing Subscription: $($subscription.Name)" -ForegroundColor Yellow

    # Select the current subscription
    Select-AzSubscription -SubscriptionId $subscription.Id

    # Get all resource groups in the current subscription
    $resourceGroups = Get-AzResourceGroup

    # Loop through each resource group to get virtual network gateways
    foreach ($resourceGroup in $resourceGroups) {
        $gateways = Get-AzVirtualNetworkGateway -ResourceGroupName $resourceGroup.ResourceGroupName | Select-Object -Property Name, @{Name = "SubscriptionID";Expression = {$subscription.Id}}, ResourceGroupName, VpnType, @{Name = "SKUName";Expression = {$_.Sku.Name}}, @{Name = "SubnetID";Expression = {$_.IpConfigurations.Subnet.Id}}, @{Name = "SubnetName";Expression = {(Get-AzVirtualNetworkSubnetConfig -ResourceId $_.IpConfigurations.Subnet.Id).Name}}

        # Loop through each virtual network gateway and add details to the array
        foreach ($gateway in $gateways) {
            $gatewayDetailsArray += $gateway
        }
    }
}

# Output the gateway details
$gatewayDetailsArray | Format-Table -AutoSize Name, SubscriptionID, ResourceGroupName, VpnType, SKUName, SubnetID, SubnetName

# Export the gateway details array to a CSV file
$csvFilePath2 = "C:\temp\GatewayDetails_2.csv"
$gatewayDetailsArray | Export-Csv -Path $csvFilePath2 -NoTypeInformation

Нет, это не соответствует нашим требованиям. У нас более 1000 подписок, и нам нужно создать отчет PowerBI, чтобы отслеживать ресурсы. Существующий сценарий, который я разместил выше, содержит виртуальную сеть, с которой связан шлюз, которую мы можем использовать для сопоставления с другими ресурсами. Я хотел знать, можем ли мы получить имя шлюза в этом скрипте или другим способом, где мы также можем получить расширенные свойства. Простой экспорт шлюзов бесполезен, поскольку мы хотим, чтобы они были связаны с связанной с ними виртуальной сетью.

A A 10.08.2023 06:10

Это соответствует вашему требованию? Проверьте это оно отображает все подписки и предоставляет информацию о VPN-шлюзе. В моем случае у меня есть vpn-шлюз только в 1 подписке.

Imran 10.08.2023 07:54

Проблема здесь в том, что я получаю другую информацию, такую ​​как SKUname, VPNtype, SubnetID. Я изменил сценарий, чтобы включить эти значения в вывод, но они пустые. Я копирую модифицированный скрипт ниже.

A A 10.08.2023 08:30

Не могли бы вы уточнить, какие именно значения вам нужны?

Imran 10.08.2023 08:33

Мы хотели бы ниже в выводе. Имя шлюза, идентификатор подписки, группа ресурсов, VPNType, имя SKU, идентификатор подсети из IP-конфигураций (см. исходный снимок экрана), чтобы мы могли извлечь сведения о виртуальной сети.

A A 10.08.2023 08:39

@A Пожалуйста, проверьте обновленный ответ

Imran 10.08.2023 09:56

Это сработало. Спасибо.

A A 11.08.2023 03:13

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