使用 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
我在 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