Powershell Export-CSV忽略对象的非共享属性,我该如何解决这个问题?

mel*_*lis 4 powershell powershell-2.0

我在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代码段正是我需要覆盖Export-CSV的属性截断.https://powersnippets.com/union-object/ 感谢您的帮助!

Jam*_*phy 7

如果您知道CSV文件中所需的特定属性,则可以将Select-Objectcmdlet插入管道中,如下所示:

$list | Select-Object prop1, prop2, prop3 | Export-Csv -Path (Get-SaveFile) -NoTypeInfo
Run Code Online (Sandbox Code Playgroud)

如果您知道特定属性,则可以扫描列表以生成属性列表.每个对象公开一个名为的属性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
Run Code Online (Sandbox Code Playgroud)