使用 PowerShell 更新 CSV 中的字段

Update Field in CSV with PowerShell

我在 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 文件时,数据未更新。

您需要在 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