azure - 使用其他属性获取扩展属性

标签 azure powershell azure-virtual-network

我有一个 PS 脚本,用于收集所有 Az 虚拟网络网关的信息,但获取资源名称时似乎存在问题。我在屏幕截图中看到带有红色箭头的名称,而不是带有黄色箭头的名称。

enter image description here

$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

最佳答案

要收集订阅中所有虚拟网关的信息,您可以使用以下修改后的脚本:

# $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

输出:

enter image description here

在 csv 中,文件导出如下:

enter image description here

<小时/>
# $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

更新

We would like below in output. Gatway name, Subscription ID, Resource group, VPNType, SKU name, Subnet ID from IPconfigurations (refer to original screenshot) so that we can extract VNET detail

您可以使用以下命令获取所有详细信息,如下所示:

# 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

enter image description here

enter image description here

关于azure - 使用其他属性获取扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76864212/

相关文章:

Azure 角色间同步

Powershell脚本窗口消失

powershell - 自动保存在 Powershell 中

Azure 服务网络协议(protocol)

c# - 将 Application Insights 查询 API 调用结果转换为 DataTable

azure - 导出 Azure 策略豁免下的所有数据

git - Azure Git 身份验证失败

node.js - 使用 Pester 覆盖 powershell 脚本

azure - vnet 中所有虚拟机的静态传出 IP

azure - 如何在 Microsoft Azure 中将虚拟机从公共(public)子网迁移到私有(private)子网