You need to enable JavaScript to run this app. PowerShell 如何实现VNet与对应Subnet的分行表格展示
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 如何实现VNet与对应Subnet的分行表格展示

脚本调整方案

原脚本输出不符合预期的核心原因是,单个VNet仅生成1条关联记录,该记录的Subnet字段直接存放了当前VNet下所有子网名称的数组。PowerShell在渲染表格时,遇到属性值为数组的情况会自动做折叠展示,最终形成{MgmtSubnet, Devsubnet...}的合并效果,无法拆分为多行。

具体调整方向:

  • 删掉原脚本里冗余的重复查询:循环遍历VNet集合时,循环项本身已经携带当前VNet的全部属性,根本不需要再通过Where-Object重新匹配找对象,属于多余操作,白白增加管道查询开销
  • 增加内层遍历逻辑:对每个VNet下的Subnets集合做二次循环,每一个子网单独生成一条独立的VNet-子网关联记录,确保两个字段是一对一的对应关系,不存在嵌套数组
  • 简化对象创建逻辑:用[PSCustomObject]的快速属性赋值写法替代原来New-Object+Add-Member的冗余写法,代码更短也更好维护

调整后的完整可运行脚本:

$allVnets = Get-AzVirtualNetwork
$ResourceList = @()

foreach ($vnet in $allVnets) {
    # 逐个遍历当前VNet下的子网,生成独立行记录
    foreach ($subnet in $vnet.Subnets) {
        $record = [PSCustomObject]@{
            Vnet   = $vnet.Name
            Subnet = $subnet.Name
        }
        $ResourceList += $record
    }
}

# 用Format-Table输出自动适配列宽的规整表格
$ResourceList | Format-Table -AutoSize

调整后的输出会完全匹配预期:属于同一VNet的多个子网会单独占一行,不会再出现之前的数组折叠合并展示问题。

内容的提问来源于stack exchange,提问作者askwizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 01:24:04