将嵌套的PSObjects数组转换为Export-Csv字符串的更好方法?

时间:2019-02-04 16:55:57

标签: powershell tostring

我有一个PSCustomObject,其中包含嵌套的对象数组,我需要能够将其通过管道传递到Export-CsvExport-Excel而不会丢失任何数据。我事先不知道对象将具有哪些属性,或者本身将具有哪些属性。

$ArrayofComplexObjects是我的输入数据,来自日志摘要。字段的实际数量及其类型随我运行的每个数据提取而变化,具体取决于提取期间的精确日志条目。例如,最后一个摘录具有大约80个属性,其中60个是对象,并且取决于特定日志条目中的数据,其中任何一个本身都可以是对象数组。其余属性是字符串和整数的混合物。

$ArrayOfStrings = @()
$ArrayofComplexObjects | ForEach-Object {
    $LineItem = @{}
    $_.PSObject.Properties | ForEach-Object {
        $LineItem.Add($_.Name, ($_.Value | Out-String ))    
    }
    $ArrayOfStrings += New-Object PSObject -Property $LineItem
}

$ArrayOfStrings | Export-Csv .\temp.csv -NoTypeInformation  

重要的是,以非技术友好的格式导出文件,并可以将其附加到事件日志中。

该代码正在运行,但是我感到非常怀念,因为我错过了一些显而易见的事情,并且重新发明了轮子。有没有更好/更简单/更优雅的方法呢?

0 个答案:

没有答案