powershell将哈希表数组转换为csv

时间:2012-06-23 23:23:34

标签: powershell

已完成谷歌搜索但未找到合适的答案

我有

     $a = @(
           @{"name"="a"; "value"="1"},
           @{"name"="b"; "value"="2"}
       )

    Foreach($x in $a){
          $obj = New-object psobject
          Foreach($key in $x.keys) {
                 $obj ¦ add-member -membertype NoteProperty -name $key -value $x[$key]
           }
           $obj ¦ export-cvs test.csv
     }

我只在驾驶室的最后一行。我想要所有的行

2 个答案:

答案 0 :(得分:2)

事实上,Export-Csv不会附加(< v3),但我不认为ConvertTo-Csv会解决问题......最后你会得到一个文件,其中包含重复数据库中每个对象的标题。我建议两件事之一:

  • 在foreach {}之外移动Export-Csv(虽然需要将它放在子表达式中,因为默认情况下不能管它)
  • 使用Foreach-Object代替并获得相同的结果

我还建议使用New-Object PSObject -Property参数,而不是稍后添加成员:因为你使用哈希表作为基础,你就在那里,请参阅附件代码示例:

# Using $( foreach ($x in $a) {} ) | Export-Csv
$(Foreach($x in $a){
    New-object psobject -Property $x
}) | Export-Csv test.csv

# Using $a | Foreach-Object {} | Export-Csv
$a | ForEach-Object { 
    New-Object PSObject -Property $_ 
} | Export-Csv test.csv

答案 1 :(得分:0)

每次都要覆盖csv文件。每次尝试使用convertTo-CSV(而不是export-csv)并将其附加到文件中。