我在powershell 2中使用Export-CSV正确保存但是我希望它包含所有内容,如果它是空的我想要空值。
$list | Export-Csv -Path (Get-SaveFile) -NoTypeInformation;
Export-CSV的文档:
当您向Export-CSV提交多个对象时,Export-CSV会根据您提交的第一个对象的属性来组织文件。如果其余对象没有指定的属性之一,则该对象的属性值为null,由两个连续逗号表示。如果其余对象具有其他属性,则这些属性值不包含在文件中。
我不能简单地组织列表,因为有两件事可能有0或更多值。对于某些对象有注释,有些有链接,有些有两者。但是我需要每个链接1列,每个注释需要1列,无论有多少,或者没有。
是否有不同的cmdlet实现了这种export-csv样式,其中没有字段被忽略?
使用回答编辑: 来自iRon的这个PowerShell Snippet正是我需要覆盖Export-CSV的属性截断。 https://powersnippets.com/union-object/ 谢谢你的帮助!
答案 0 :(得分:7)
如果您知道CSV文件中需要的特定属性,则可以将Select-Object
cmdlet插入管道中,如下所示:
$list | Select-Object prop1, prop2, prop3 | Export-Csv -Path (Get-SaveFile) -NoTypeInfo
如果您不知道特定属性,则可以扫描列表以生成属性列表。每个对象都公开一个名为PSObject
的属性,该属性包含另一个名为Properties
的属性。您可以扫描列表,获取列表中每个对象的属性名称,然后通过调用Select-Object -Unique
来完成它,以获得一个没有重复项的很好的属性名称列表。
$propList = $list | ForEach-Object {
$_.PSObject.Properties | Select-Object -ExpandProperty Name
} | Select-Object -Unique
$list | Select-Object $propList | Export-Csv -Path (Get-SaveFile) -NoTypeInformation