Azure门户及PowerShell无法获取带连接设备的VNet列表求助
获取Azure中带有已连接设备的虚拟网络(VNet)列表解决方案
前置检查
- 确保安装最新版Az PowerShell模块:
Install-Module -Name Az -AllowClobber -Scope CurrentUser - 登录Azure账号:
Connect-AzAccount - 切换到目标订阅(多订阅场景):
Set-AzContext -Subscription "你的订阅ID/名称"
可用PowerShell脚本
以下脚本会遍历所有VNet,筛选出关联了虚拟机、网络接口、VPN网关等设备的VNet,并输出详细信息:
# 获取当前订阅下所有虚拟网络 $vnets = Get-AzVirtualNetwork # 遍历每个VNet,排查已连接资源 foreach ($vnet in $vnets) { $connectedDevices = @() # 关联网络接口(对应虚拟机或独立网卡) $nics = Get-AzNetworkInterface | Where-Object { $_.IpConfigurations.Subnet.Id -match $vnet.Id } foreach ($nic in $nics) { $linkedVM = Get-AzVM | Where-Object { $_.NetworkProfile.NetworkInterfaces.Id -contains $nic.Id } if ($linkedVM) { $connectedDevices += [PSCustomObject]@{ 资源类型 = "虚拟机" 名称 = $linkedVM.Name 状态 = $linkedVM.PowerState } } else { $connectedDevices += [PSCustomObject]@{ 资源类型 = "独立网络接口" 名称 = $nic.Name 状态 = $nic.ProvisioningState } } } # 关联VPN网关 $vpnGateways = Get-AzVirtualNetworkGateway | Where-Object { $_.VirtualNetwork.Id -eq $vnet.Id } foreach ($gateway in $vpnGateways) { $connectedDevices += [PSCustomObject]@{ 资源类型 = "VPN网关" 名称 = $gateway.Name 状态 = $gateway.ProvisioningState } } # 输出有连接设备的VNet信息 if ($connectedDevices.Count -gt 0) { Write-Host "`n虚拟网络: $($vnet.Name) (资源组: $($vnet.ResourceGroupName))" Write-Host "已连接设备列表:" $connectedDevices | Format-Table -AutoSize } }
脚本说明
- 若之前无输出,大概率是目标VNet未关联任何活跃设备,或脚本未覆盖到对应资源类型。
- 可根据需求扩展,比如添加应用网关、负载均衡器的关联检查,只需新增对应
Get-Az*命令并匹配VNet ID即可。
内容的提问来源于stack exchange,提问作者Anjum aara
相关产品推荐
相关产品推荐

