与对象不同的导出CSV或ConvertTo-CSV

时间:2014-12-21 20:28:23

标签: powershell csv export-to-csv

因为在我被允许为现有答案添加评论之前我需要更多声誉,所以我不得不创建自己的问题。但我的问题与这个帖子中的问题相同:

How to include all properties of all array objects in csv in powershell

就我所知,该线程中提出的解决方案对我不起作用。

  • 根据属性数量对对象进行排序是不安全的。 仅仅因为一个对象具有最多的属性并不意味着它具有 所有属性,这意味着我的CSV仍然缺少一些数据。
  • 在$ props变量中指定属性,后跟$ objects |选择$ props |我似乎无法使用Export-CSV。因为我的对象是基于日志文件中的数据创建的,所以我不知道要提前查找的每个可能的属性。意外的条目可能会出现在日志中,当它们出现时,它们可能是我的CSV中包含的最重要的数据。我试图选择*但它没有什么不同,如果它根本不存在。

有人有任何其他想法吗?希望这是基于其他线程的足够信息。

1 个答案:

答案 0 :(得分:4)

我猜你正在写一个新文件。由于我们没有要修复的脚本示例,因此我会提供一个。这是你正在寻找的吗?

$obj1 = [pscustomobject]@{
    Name = "Name1"
    Place = "Place1"
}

$obj2 = [pscustomobject]@{
    Name = "Name2"
    Alcohol = "Alcohol1"
}

$arr = $obj1, $obj2

#Get all possible properties from the data
$prop = $arr | % { $_.psobject.Properties | Select-Object -ExpandProperty Name } | Sort-Object -Unique

#Export data, including all possible properties
$arr | Select-Object $prop | Export-CSV .\Desktop\test.csv -Delimiter ";" -NoTypeInformation

test.csv

"Alcohol";"Name";"Place"
;"Name1";"Place1"
"Alcohol1";"Name2";

(我想我以前在SO上做过类似的事,但我找不到答案。)