PowerShell排序导出CSV文件执行脚本报错问题咨询
PowerShell CSV排序脚本报错修复方案
报错原因
- 列名引用规则错误:目标排序列
AMCore Content Version包含空格,直接书写时PowerShell会将空格拆分后的AMCore、Content、Version识别为三个独立属性,无法匹配CSV中实际存在的列,直接触发属性不存在的报错。 - 排序参数缺失:原脚本未指定降序参数,默认执行升序排序,不符合降序排序的需求。
- 导出逻辑瑕疵:默认
Export-Csv命令会在输出文件首行写入.NET类型标识行,用Excel打开时会出现多余无效内容;未指定编码时容易出现中文乱码。 - 排序逻辑隐患:版本类值为带分隔符的结构化数值,直接按字符串排序会出现逻辑错误(例如字符串比较规则下
10.0.0会排在9.0.0之前,不符合版本号大小的实际判断逻辑)。
修正后可直接运行的脚本
Import-Csv -Path D:\Excel\details.csv | Sort-Object -Property @{Expression = {[version]$_."AMCore Content Version"}} -Descending | Export-Csv -Path D:\sb.csv -NoTypeInformation -Encoding UTF8
修正点说明
- 带空格的列名通过
$_."列名"的格式正确引用,解决属性识别失败的核心报错 - 增加
-Descending参数,实现按目标列降序排序的需求 - 排序时将列值强转为
[version]版本类型,严格按照版本号的数值规则排序,避免字符串排序的逻辑错误 - 增加
-NoTypeInformation参数移除导出文件的多余类型头,增加-Encoding UTF8参数避免中文乱码问题
相关参考截图
- CSV输入数据示例:

- 原脚本运行报错输出参考:

内容的提问来源于stack exchange,提问作者Arunkumar
相关产品推荐
相关产品推荐

