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

PowerShell中PSCustomObject数组格式异常问题求助

解决PSCustomObject数组输出格式问题

你的代码已经正确创建了包含多个PSCustomObject的数组,但PowerShell默认的输出格式化逻辑导致了显示差异——当数组内的对象仅包含单个属性时,PowerShell会自动采用紧凑的表格视图,将同属性的所有值合并为一个集合展示。要得到你期望的每个对象单独展开的格式,可以用以下几种方法:

方法1:强制使用列表格式输出

直接对数组使用Format-List命令,强制每个对象单独显示属性:

$FineData = @()

foreach ($Session in $Sessions) {  
        $Job = Get-VBRTaskSession -Session $Session 
        $Result = [pscustomobject]@{ 
                Id = $job.Id.Guid                       
        }
        $FineData += $Result
}

# 用Format-List输出期望格式
$FineData | Format-List

方法2:优化数组收集+列表输出

PowerShell中用+=构建数组效率较低(每次都会创建新数组),建议直接通过foreach循环收集对象,再配合Format-List输出:

# 直接从foreach循环收集对象到数组
$FineData = foreach ($Session in $Sessions) {  
    $Job = Get-VBRTaskSession -Session $Session 
    [pscustomobject]@{ 
        Id = $job.Id.Guid                       
    }
}

# 输出期望格式
$FineData | Format-List

方法3:循环内直接输出

如果不需要保留数组,可直接在循环内输出每个PSCustomObject,PowerShell会自动按单个对象的列表格式展示:

foreach ($Session in $Sessions) {  
    $Job = Get-VBRTaskSession -Session $Session 
    [pscustomobject]@{ 
        Id = $job.Id.Guid                       
    }
}

原理说明

PowerShell的格式化引擎会根据对象的属性数量自动选择显示模式:

  • 当对象有多个属性时,默认用表格视图
  • 当数组内所有对象只有一个属性时,默认用紧凑表格合并显示属性值
  • Format-List会强制忽略默认规则,将每个对象的属性单独展开显示,完全匹配你的期望格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:00:45