如何循环处理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
相关产品推荐
相关产品推荐

