使用 Powershell 将值添加到现有 CSV

Using Powershell to add values to existing CSV

我已经和这个问题斗争太久了,希望你能帮上忙。

我有一个 CSV,我需要为其添加一些值,最好使用 Powershell。我需要添加具有固定文本值的 header 行和一列。

我的 CSV 在对它进行任何操作之前看起来像这样:

contact-email;contact-sms;contact-firstname
test@example.com;+3580000000;Mike

我需要它看起来像这样:

contact-email;contact-sms;contact-firstname;order-site
test@example.com;+3580000000;Mike;Finland

因此需要添加最后一列“order-site”并且该列中的每一行都应具有值“芬兰”。

到目前为止,我已经编写了这个 Powershell 脚本,我得到了一个教程:

$file = Import-Csv E:\Raportit\SALES\SALES_TD_S01.csv -Delimiter "`t" -Encoding Default -Header "contact-email;contact-sms;contact-firstname"

foreach($c in $file) {

    Add-Member -Input $c -MemberType NoteProperty -Name "order-site" -Value "Finland"

}

$file | Export-Csv -Path "C:\Temp\test.csv" -Encoding Default -NoTypeInformation

但不幸的是,这使得 CSV 看起来像这样:

"contact-email;contact-sms;contact-firstname","order-site"
"test@example.com;+3580000000;Mike","Finland"

对于此文件的用例,它需要看起来像第一个 should-look-like 示例,没有双引号和由分号 (;) 分隔的列。只要输出如下所示,双引号就可以:

"contact-email;contact-sms;contact-firstname;order-site"
"test@example.com;+3580000000;Mike;Finland"

非常感谢你们,我知道这可能是一项非常简单的任务,但我无法全神贯注来挽救我的生命。

  1. 如果文件有 headers:
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' | 
    Select-Object *, @{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation
  1. 如果文件没有 headers:
$headers = 'contact-email','contact-sms','contact-firstname'
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' -Header $headers | 
    Select-Object *, @{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation

CSV 输出:

"contact-email";"contact-sms";"contact-firstname";"order-site"
"test@example.com";"+3580000000";"Mike";"Finland"