You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何循环处理PowerShell自定义对象生成指定结构HTML表格?

实现PowerShell HTML表格的自动化循环生成

需求说明

  • 现有PowerShell对象$obj,包含属性:Name、AER、DER、APRO、FPCT,其中Name有3个条目,各属性列对应有值
  • 需要自动化生成按**「Name1-列1、Name2-列1、Name3-列1、Name1-列2……」**顺序排列的表格结构,替代重复编写New-HTMLTable的冗余代码

当前冗余代码

$obj | Sort-Object Name | Select-Object AER, DER, APRO, FPCT

New-HTML {
    New-HTMLSection -Invisible {
        New-HTMLSection {
            New-HTMLTable -DataTable $obj -IncludeProperty Name, AER -DefaultSortOrder Descending -PagingLength 10 
        }
        New-HTMLSection {
            New-HTMLTable -DataTable $obj -IncludeProperty Name, DER -DefaultSortOrder Descending -PagingLength 10 
        }
        New-HTMLSection {
            New-HTMLTable -DataTable $obj -IncludeProperty Name, APRO -DefaultSortOrder Descending -PagingLength 10 
        }
        New-HTMLSection {
            New-HTMLTable -DataTable $obj -IncludeProperty Name, FPCT -DefaultSortOrder Descending -PagingLength 10 
        }
    }
}

期望的自动化实现框架(示例)

New-HTML {
    New-HTMLSection {
        $Machines = @(
            'Machine1', 'Machine2', 'Machine3'
        )
        foreach ($Machine in $Machines) {
            New-HTMLSection -HeaderText $Machine {
                $Information = @(
                    'First Information', '2nd Information', '3rd information'
                )
                foreach ($I in $Information) {
                    New-HTMLSection -HeaderText $I {
                        New-HTMLTable -DataTable $Machine
                    }
                }
            } -Direction column
        }
    } -HeaderText "Citrix Machine Information" -Direction column
} -Online -ShowHTML

输出对比

当前输出与期望输出

优化后的自动化实现代码

# 定义需要遍历的指标列(排除Name,每个表格都需包含该属性)
$metrics = @('AER', 'DER', 'APRO', 'FPCT')
# 获取排序后的Name列表,保证顺序统一
$sortedNames = ($obj | Sort-Object Name).Name

New-HTML {
    New-HTMLSection -HeaderText "Citrix Machine Information" -Direction column {
        # 外层循环遍历每个指标
        foreach ($metric in $metrics) {
            # 内层循环遍历每个Name,生成对应表格
            foreach ($name in $sortedNames) {
                # 筛选当前Name和对应指标的数据
                $filteredData = $obj | Where-Object { $_.Name -eq $name } | Select-Object Name, $metric
                New-HTMLSection -HeaderText "$name - $metric" {
                    New-HTMLTable -DataTable $filteredData -DefaultSortOrder Descending -PagingLength 10
                } -Direction column
            }
        }
    }
} -Online -ShowHTML

代码说明

  • 先定义指标数组$metrics,涵盖除Name外的所有目标属性
  • 提前获取排序后的Name列表,确保生成表格的顺序一致
  • 通过双层循环实现「指标优先、Name遍历」的逻辑,匹配期望的排列顺序
  • 每次循环筛选对应Name和指标的数据,生成独立表格,避免冗余代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:31:16