首页 > 解决方案 > 如何在 Powershell 中导出具有数组列表的对象

问题描述

我正在尝试将对象中的列表导出到 CSV,但我的输出是:

高清 Mdo Montagem Eixo Traseiro,"System.Collections.ArrayList"

对象是:

Class Departamento

{
    [String]$nome
    [Object]$pessoas

}

因此,第一个是字符串,第二个是 ArrayList(Object)。我想知道如何导出我的arrayList,它有我部门所有人的名字。谢谢。

标签: powershellcsvarraylistoutputexport-to-csv

解决方案


您应该将对象 [Object]$pessoas 转换为字符串或我们的 XML 或 JSON 格式,而不是 CSV。因为 CSV 无法按您的意愿显示对象(CSV 只有“一级”)。
如果您想使用 JSON:

#Export
$obj | ConvertTo-Json -Depth 99 | Out-File -FilePath C:\Temp\test.json #-Depth 99 <-- Needed for the ArrayList(Object)

#Import
Get-Content -Path C:\Temp\test.json | ConvertFrom-Json

如果您必须使用 csv 格式,您可以这样做(使用 -join 将列表转换为字符串):

$obj | Select-Object -Property nome, @{n = 'pessoas'; e = {$_.pessoas -join ';'}} | Export-Csv -Path C:\Temp\test.csv

推荐阅读