Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell将HASTABLE数组转换为csv_Powershell - Fatal编程技术网

powershell将HASTABLE数组转换为csv

powershell将HASTABLE数组转换为csv,powershell,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-memb

做过谷歌搜索,但没有找到合适的答案

我有

     $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
     }

我在出租车里只排最后一行。我想要每次都覆盖csv文件的所有行。每次尝试使用convertTo CSV(而不是导出CSV)并将其附加到文件。

事实上,导出CSV不会附加(
  • 将导出Csv移到foreach{}之外(但需要将其放入子表达式中,因为默认情况下无法将其管道化)
  • 改用Foreach对象并获得相同的结果
我还建议使用新的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

不能将同名元素添加到PSObject中两次。你可以用一个自定义的表格来原谅我的无知,但是如何附加?我确实得到了关于导出csv和转换csv的帮助,但没有看到append?KB对标题的说明。使用这种方法,您不会得到想要的,因为每个converttocsv调用的输出都有自己的头。BartekB的解决方案是,使用哈希表创建自定义对象,并在这些对象集上使用导出csv,这是一个更好的解决方案。为了完整性起见,我打算使用set content和-append开关来完成输出。我应该说得更清楚些。