如何将对象转换为垂直格式的csv列表

时间:2018-02-14 00:22:51

标签: powershell csv

我需要将自定义PS对象导出为CSV,但将其格式化为垂直列表。

当我打电话

$object | Export-Csv -Path "$($env:USERPROFILE)\Desktop\out.csv" -force 

$object | ConvertTo-Csv | clip

输出始终水平显示对象属性,这意味着在excel中查看它们时,我们需要滚动到righ以查看所有属性。

如何输出对象以垂直显示属性?

当前输出

#TYPE System.Management.Automation.PSCustomObject
"one","two","three"
"1","2","3"

所需输出

#TYPE System.Management.Automation.PSCustomObject
"one","1"
"two","2"
"three","3"

这可以使用PS命令,还是我必须手动构建字符串?

1 个答案:

答案 0 :(得分:2)

迭代对象的成员。创建一个新的自定义对象,其中“name”和“value”对应于您想要的每个成员。

这是一个简单的例子:

$object = [pscustomobject]@{one=1;two=2;three=3}
# not what you want
$object | ConvertTo-Csv

# what you want
$object | Get-Member -MemberType NoteProperty | 
    ForEach-Object {
        [pscustomobject] @{Name=$_.name;Value=$object.($_.Name)}
    } | ConvertTo-Csv

也许是一个更简洁的答案:

$object |
    Get-Member -MemberType NoteProperty |
    Select-Object @{name='Name';expression={$_.name}},
                  @{name='Value';expression={$object.($_.name)}} |
    ConvertTo-Csv