PowerShell数组输出异常求助:连续调用数组显示格式混乱
问题原因
这是PowerShell默认输出格式化机制的特性导致的:
- PowerShell在处理同一段输出流里的多个对象集合时,会根据第一个输出的对象结构固定显示列格式,后续输出的集合会强制套用这个格式,不会重新检测新集合的对象结构。
- 你在脚本结尾连续调用
$FileB_ar和$FileA_ar时,PowerShell先以$FileB_ar里的自定义对象为准生成列配置,输出$FileA_ar时直接复用这个配置——哪怕两个数组的对象属性完全相同,只要第一个集合的格式已经确定,第二个集合的列就可能因为格式复用出现缺失或错位。 - 而手动单独调用时,每次都是独立的输出流,PowerShell会重新识别当前对象的结构并生成正确的列格式,所以显示正常。
解决办法
- 给每个数组显式指定格式化方式,强制重新生成格式:
$FileB_ar | Format-Table -AutoSize $FileA_ar | Format-Table -AutoSize - 或者用
Out-String把每个数组的输出转成独立字符串后再输出:$FileB_ar | Out-String $FileA_ar | Out-String - 如果两个数组的对象结构完全一致,也可以合并成一个集合输出,避免格式冲突:
$FileB_ar + $FileA_ar
内容的提问来源于stack exchange,提问作者Val
相关产品推荐
相关产品推荐

