我在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文件时,数据不会更新。
答案 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