PowerShell导入首列标题为#的CSV文件时无法正常提取指定列
问题原因
PowerShell 的 Import-Csv 命令默认以 # 作为注释行的标记,只要行首字符为 #,整行都会被判定为注释直接跳过。你的CSV表头第一列的标题为#,导致表头整行被误判为注释没有被正常读取,命令会自动将下一行的业务数据当做表头解析,后续的指定列筛选逻辑完全错位,最终输出结果异常。
解决方法
无需修改原CSV文件,只需在Import-Csv执行时新增-CommentCharacter参数,将注释标记替换为CSV中不会出现的字符即可禁用#的注释识别逻辑,修改后的代码如下:
$Headers = @( "Workstation Type" "Model" "Asset Tag" ) Import-Csv 'C:\CSVFiles\DeployedInventory_Workstations.csv' -CommentCharacter ([char]0) | Select $Headers | Export-Csv -Path 'C:\CSVFiles\DeployedInventory_Workstations2x.csv' -NoTypeInformation
如果你使用的是PowerShell 7及以上版本,可以直接将参数设置为-CommentCharacter ''来完全关闭注释识别功能,效果一致。
内容的提问来源于stack exchange,提问作者Toli McFly
相关产品推荐
相关产品推荐

