我需要将自定义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命令,还是我必须手动构建字符串?
答案 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