PowerShell遍历CSV指定列内容按规则生成TXT文件的实现疑问
PowerShell遍历CSV生成TXT问题修正
现有代码存在的问题
- 分隔符不匹配:你当前代码使用分号
;作为CSV分隔符,但提供的CSV样例列之间为空白(空格/制表符)分隔,会导致字段拆分失败,无法正确读取三列内容。如果你的实际CSV确实是分号分隔可忽略此点。 - 未定义变量引用:循环遍历CSV得到的每一行对象存储在
$Systemname中,代码中使用的$User、$Password没有定义,无法读取到对应字段值。 - 属性展开语法错误:PowerShell双引号内直接写
$Systemname.Column1不会解析对象属性,需要使用子表达式语法$($Systemname.Column1)才能正确取值。 - 无效语法逻辑:字符串后直接拼接
Add-Content属于错误写法,且Add-Content和Out-File -Append功能重复,无需同时使用。
修正后可运行代码
# 导入CSV,若实际为分号分隔则将`-Delimiter`值改为`;` $data = Import-Csv 'C:\Path.csv' -Delimiter "`t" foreach ($row in $data) { # 拼接每行输出内容 $outputStr = "Systemname is $($row.Column1) and the User I'm going to use is named $($row.Column2) with the Password $($row.Column3)" # 追加写入文件,指定UTF8编码避免特殊字符乱码 $outputStr | Out-File -FilePath C:\path.txt -Append -Encoding UTF8 }
注意事项
- 如果CSV是多空格分隔而非制表符,可先将原始CSV中的多空格批量替换为制表符,避免字段识别错误。
- 代码中指定UTF8编码可适配密码中的特殊字符,避免出现乱码。
内容的提问来源于stack exchange,提问作者Ladi
相关产品推荐
相关产品推荐

