使用 PowerShell 将文本添加到现有 csv 文件的行

Adding text to existing csv file's rows using PowerShell

我想将 csv 文件中的文本 ;12345 添加到 VAT Number.

列中包含 DE123456789 的每一行

示例:

header1; header2; header3; header4; header5; VAT Number; header7; Kundennummer
AB; 12345; AB123456789; 10.03.2021; GT; DE123456789; EUR
CD; 456789; 22.24; Text; SW;
AB; 12345; AB123456789; 10.03.2021; GT; DE123456789; EUR

我想要保存的文件是

header1; header2; header3; header4; header5; VAT Number; header7; Kundennummer
AB; 12345; AB123456789; 10.03.2021; GT; DE123456789; EUR; 12345
CD; 456789; 22.24; Text; SW;
AB; 12345; AB123456789; 10.03.2021; GT; DE123456789; EUR; 12345

我的尝试是这样的:

$File = 'S:\Test\test.csv'
$Check = (Import-Csv $File)."VAT Number" | ForEach-Object {
    if ($Check -Contains "DE123456789") {
        Select-Object @{Name='Kundennummer';Expression={'12345'}} | 
        Export-Csv $File -NoTypeInformation
    }
}

但是文件根本没有任何变化。

我在一个问过类似问题的论坛中找到了这段代码。但是没有反馈。

好的,既然你已经为文件提供了足够的 headers,这对你有用:

$csv = Import-Csv -Path 'D:\Test\TheInputFile.csv' -Delimiter ';'
# get an array of the column headers
$allHeaders = $csv[0].PsObject.Properties.Name
$data = foreach ($item in $csv) {
    if ($item.'VAT Number' -eq 'DE123456789') { $item.Kundennummer = 12345 }
    # output a new object making sure all fields are present (allbeit some will remain empty)
    $item | Select-Object $allHeaders
}

$data | Export-Csv -Path 'D:\Test\TheNewFile.csv' -Delimiter ';' -NoTypeInformation