提问者:小点点

在CSV文件PowerShell中导出多个对象


我的代码有问题,当我在文件中导出时,文件中只显示一个对象,举个例子应该更好:

有了结果:

Field1
Test1

我想得到这个:

Field1  col1    col2   Field2   col3   col4
Test1   a       b      Test2     c      d
        a2      b2               c2     d2

该文件 :

col1    col2
a       b
a2      b2

我已经尽力制作了一段代码,希望这对你有所帮助。我在代码中创建字段。

$csv = Import-Csv .\file.csv -Delimiter ';'
$dataTable = New-Object System.Data.DataTable

$dataTable.Columns.Add("Field1") | Out-Null


foreach ($s in "Test1")
{
  $row = $dataTable.NewRow()

  $row["Field1"] = $s

  $dataTable.Rows.Add($row)
}

#my problem is there, I don't know how merge these two lines
$dataTable | export-csv -NoTypeInformation -Path ".\fileResult.csv"

$csv | Export-CSV   -Path ".\fileResult.csv" -NoTypeInformation -Delimiter ";" -Append

共1个答案

匿名用户

在您的示例中,您有标题和一行。我假设您将在多行上进行行循环。

运行所有这些代码会给你错误;使用单行或循环版本。

$csv = Import-Csv .\file.csv -Delimiter ';'

#Single line
$csv | Add-Member -Type Noteproperty -Name "Field1" -Value "Test1"
$csv | Add-Member -Type Noteproperty -Name "Field2" -Value "Test2"

#looping over all lines
foreach($line in $csv({
    $line | Add-Member -Type Noteproperty -Name "Field1" -Value "Test1"
    $line | Add-Member -Type Noteproperty -Name "Field2" -Value "Test2"
}

# use Select-Object to get orders CSV
$csv | Select-Object Field1, col1, col2, Field2 | Export-CSV   -Path ".\fileResult.csv" -NoTypeInformation -Delimiter ";" -Append

编辑:一些解释

您的CSV文件作为对象导入。标题(< code>col1,< code>col2)被自动指定为对象的NoteProperty成员。您可以通过运行< code>$csv | Get-Member来查看这一点。

您可以使用Add成员将成员添加到CSV对象,指定成员类型、名称(标题)和值。

文档

导入-Csv添加-成员-导出-Csv选择-对象