Преобразование массива объектов с несоответствующими свойствами в csv

#arrays #powershell #csv

Вопрос:

Короче говоря, как преобразовать это

 $al = New-Object System.Collections.ArrayList

$al =[PSCustomObject]@{prop1="value1"; prop2="value2"}
$al =[PSCustomObject]@{prop1="value11"; prop3="value33"}
$al =[PSCustomObject]@{prop4="value444"}
 

В это

введите описание изображения здесь

Комментарии:

1. См. Запрос на связанную проблему: Добавьте параметр UnifyProperties для выбора объекта #13906

Ответ №1:

Используйте psobject скрытый набор участников, чтобы узнать все имена свойств перед экспортом:

 $propertyNames = $al |ForEach-Object {
  # Discover all the object's properties
  $_.psobject.Properties |ForEach-Object {
    # Get each property name
    $_.Name
  }
} |Sort-Object -Unique

# Now the CSV will have a column for every single unique property name
$al |Select-Object $propertyNames |Export-Csv -Path $Path1 -NoTypeInformation