Powershell 使用导出Csv对数据进行分组

Powershell 使用导出Csv对数据进行分组,powershell,csv,Powershell,Csv,我创建了一个动态对象,希望将其输出到CSV文件。到目前为止,我只在一列、一个单元格中使用了不同的值,或者输出了对象的描述(比如字符串长度) 我的HashTable对象是按照以下方式创建的: $item = @{"Total"=0; "Complete"= 0} $obj=@{"AllCounted" = 0 } # gets outside data foreach($field in $data){ $obj+=@{$field = $item} $obj[$

我创建了一个动态对象,希望将其输出到CSV文件。到目前为止,我只在一列、一个单元格中使用了不同的值,或者输出了对象的描述(比如字符串长度)

我的HashTable对象是按照以下方式创建的:

 $item = @{"Total"=0; "Complete"= 0}
 $obj=@{"AllCounted" = 0 }

 # gets outside data
 foreach($field in $data){

     $obj+=@{$field = $item}

     $obj[$field]+= @{ $subField = $item }
这将导致以下对象

 $obj{
      "AllCounted" = [int]
      "dynamicField1"= {
                             "Total"    =[int];
                             "Complete" =[int]
                             "SubField1" ={
                                             "Total"    =[int];
                                             "Complete" =[int]
                             }
                         }
      "dynamicField _ N"= {
                            "Total"    =[int];
                            "Complete" =[int]
                            "SubField _ N" ={
                                             "Total"    =[int];
                                             "Complete" =[int]
                             }
                        }
   }
我的目标是

 $obj.Keys|%{ 
         $_ +","+$obj[$_]["Total"]+","+ $obj[$_]["Complete"]  | Out-File "something.csv" -append"

         foreach($innerLoop in $obj[$_].Keys){
                 ","+ $_ +","+$obj[$_]["Total"]+","+ $obj[$_]["Complete"]  | Out-File "something.csv" -append"
        }

}
CSV显示

 Field1  |  Total      | Complete
         |  SubField1  |  Total   | Complete 
         |  SubField2  |  Total   | Complete 
         |  SubField N |  Total   | Complete 


 Field2  |  Total      | Complete
         |  SubField1  |  Total   | Complete 
         |  SubField2  |  Total   | Complete 
         |  SubField N |  Total   | Complete 


 Field N |  Total      | Complete
         |  SubField1  |  Total   | Complete 
         |  SubField2  |  Total   | Complete 
         |  SubField N |  Total   | Complete 

所有想法都没有了,但仍在尝试。

CSV文件不能像那样对数据进行分组。这是一张平面桌子的代表。您有一个标题行,其中列标题以逗号分隔,以及一个或多个数据行,其中每个记录的值以逗号分隔,顺序与标题相同。您甚至想要CSV,还是只想以上一个块中显示的格式输出数据?(在这种情况下,CSV是一个错误的术语,您的意思是“文本文件”)我需要一个CSV,但当我运行诸如
“ColHeader1,ColHeader2”| Export CSV“file.CSV”
之类的命令时,该值不会显示在不同的列中。如果我这样做了,我可以为每个循环使用两个循环,并以我希望的格式手动打印信息。例如
“字段N,总计,完成”|导出CSV“文件.CSV”-追加
“子字段1,总计,完成”|导出CSV“文件.CSV”-追加,如果逗号实际将值EXP0RT CSV与Powershell对象分开,则将创建一个CSV文件,每个对象属性作为CSV中的一列。这意味着您必须创建对象(不仅仅是哈希表)。如果我创建的是CSV字符串并输出文件而不是导出CSV,有没有办法让它正常工作<代码>“,子字段N,总计”|输出文件“myFile.csv”-追加您可以,但我不建议这样做。如果您要使用Powershell,您需要学习创建和使用PS对象,因此您最好现在就开始并正确地使用它。