我有一个 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
最佳答案
要收集订阅中所有虚拟网关的信息,您可以使用以下修改后的脚本:
# $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
更新
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
关于azure - 使用其他属性获取扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76864212/