如何使用PowerShell嵌套数组在Out-GridView中拆分日志字段为单独单元格?
拆分日志为多列显示在Out-GridView
你可以通过将整行日志拆分为结构化数据(自定义对象),让Out-GridView自动将版本、描述、日期显示在独立单元格中。以下是两种可行方案:
方案一:正则表达式拆分(适配多空格分隔)
适合日志条目用多个空格分隔字段的情况,无需依赖固定宽度:
# 原始日志数组 $pro_arry = @( "V 1.0 Initial Release 7 July 2022", "V 1.1 Optimized Update functionality and added logging 9 July 2022" ) # 转换为结构化对象 $structuredLogs = $pro_arry | ForEach-Object { # 正则匹配提取版本、描述、日期 if ($_ -match '^(\S+\s+\S+)\s+(.+?)\s+(\d+\s+\w+\s+\d+)$') { [PSCustomObject]@{ 版本 = $matches[1].Trim() 描述 = $matches[2].Trim() 日期 = $matches[3].Trim() } } } # 分栏显示 $structuredLogs | Out-GridView -Title "应用版本日志"
方案二:固定位置截取(适配固定宽度格式)
如果日志是固定宽度排版,可以直接按字符位置拆分,效率更高:
# 原始日志数组 $pro_arry = @( "V 1.0 Initial Release 7 July 2022", "V 1.1 Optimized Update functionality and added logging 9 July 2022" ) # 按固定宽度截取字段 $structuredLogs = $pro_arry | ForEach-Object { [PSCustomObject]@{ 版本 = $_.Substring(0, 10).Trim() # 前10字符为版本 描述 = $_.Substring(10, 40).Trim() # 中间40字符为描述 日期 = $_.Substring(50).Trim() # 剩余字符为日期 } } # 分栏显示 $structuredLogs | Out-GridView -Title "应用版本日志"
补充说明
- 自定义对象的每个属性会被Out-GridView识别为独立列,完美实现“独立单元格”的需求;
- 若你坚持要用嵌套数组,可先将每个条目拆分为
@(版本, 描述, 日期)的数组,再通过手动构造对象转成结构化数据,但自定义对象是最简便的实现方式。
内容的提问来源于stack exchange,提问作者I am Jakoby
相关产品推荐
相关产品推荐

