使用PowerShell以CSV格式更新字段

时间:2018-01-07 13:05:46

标签: powershell-v3.0 export-to-csv

我在CSV文件中有一个大型数据集,我正在努力更新记录但没有成功。

这就是我所拥有的:

$MailData = Import-Csv $MailDB -Delimiter '|'

$update = $MailData | ForEach-Object {
  if ($_.subject -like 'GGN*') {
    $_.status = 1
    $_.status_modified = (Get-Date).ToString('yyyy-MM-dd HH-mm-ss')
  }
}

$update | Export-Csv $MailDB -Delimiter '|' -NoTypeInformation

我还尝试了-Append切换,并尝试使用Set-Content。在所有情况下,$MailData的内容都会更改,但是当我重新导入CSV文件时,数据不会更新。

1 个答案:

答案 0 :(得分:0)

您需要在ForEach-Object循环结束时输出记录,否则结果将不会包含任何数据,并且您有效地截断了文件。

(Import-Csv $MailDB -Delimiter '|') | ForEach-Object {
    if ($_.subject -like 'GGN*') {
        $_.status = 1
        $_.status_modified = (Get-Date).ToString('yyyy-MM-dd HH-mm-ss')
    }
    $_
} | Export-Csv $MailDB -Delimiter '|' -NoType