PowerShell向CSV现有空白列填充值运行后仍无数据问题求助
问题原因
你的现有CSV中已经存在server_IP_address和Server's Backup IP address两个空白列,你使用Select-Object *, 计算列的写法时,会优先保留原有空白列,后续添加的同名字段不会覆盖原有列的值,最终导出的文件里目标列自然还是空白状态。
解决方案
有两种常用修复方案:
方法1:逐行直接修改原有列值
不需要用Select-Object新增计算列,直接遍历每行给已有列赋值即可:
$v1='1.1.1.1' $v2 = '2.2.2.2' $csvData = Import-Csv -Path "C:\New.csv" foreach ($row in $csvData) { $row.server_IP_address = $v1 $row."Server's Backup IP address" = $v2 } $csvData | Export-Csv "C:\Csv\New_1.csv" -NoTypeInformation -Encoding UTF8
附加说明:-Encoding UTF8参数用于避免列名包含中文时出现乱码,无中文场景可省略
方法2:Select-Object写法调整
如果你要保留Select-Object的写法,需要先排除原有空白列,再添加计算列:
$v1='1.1.1.1' $v2 = '2.2.2.2' Import-Csv -Path "C:\New.csv" | Select-Object * -ExcludeProperty 'server_IP_address',"Server's Backup IP address", @{Name='server_IP_address';Expression={$v1}}, @{Name="Server's Backup IP address";Expression={$v2}} | Export-Csv "C:\Csv\New_1.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

