PowerShell导出显示器CSV数据格式问题:需规范列对齐并追加记录
解决PowerShell导出显示器信息到CSV的格式与追加问题
核心问题分析
- 手动拼接CSV字符串易因内容含特殊字符(如逗号)导致Excel列错位,且
Out-File的编码可能让Excel无法正确识别分隔符 - 原脚本每次执行都会重复写入表头,导致追加记录时出现冗余表头
修改后的脚本
$Monitors = Get-WmiObject WmiMonitorID -Namespace root\wmi $LogFile = "d:\monitors.csv" # 转换显示器信息为结构化对象 $monitorData = foreach ($Monitor in $Monitors) { [PSCustomObject]@{ Manufacturer = ($Monitor.ManufacturerName | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join "" Name = ($Monitor.UserFriendlyName | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join "" Serial = ($Monitor.SerialNumberID | Where-Object { $_ -ne 0 } | ForEach-Object { [char]$_ }) -join "" } } # 实现首次写入表头、后续追加记录的逻辑 if (-not (Test-Path $LogFile)) { $monitorData | Export-Csv -Path $LogFile -NoTypeInformation -Encoding UTF8 } else { $monitorData | Export-Csv -Path $LogFile -NoTypeInformation -Encoding UTF8 -Append }
关键改进点
- 用
[PSCustomObject]结构化数据,配合Export-Csv自动生成规范CSV,避免手动拼接的格式错误 - 指定
-Encoding UTF8确保Excel能正确识别文件编码,避免乱码或分隔符识别失败 - 通过
Test-Path判断文件是否存在,实现首次运行写表头、后续仅追加新记录的逻辑 Export-Csv会自动处理内容中的特殊字符(如逗号),用引号包裹字段,保证列对齐
Excel规范显示操作提示
如果直接打开CSV仍列不对齐,可通过Excel数据导入功能操作:
- 打开Excel,点击「数据」选项卡 → 「自文本/CSV」
- 选择目标CSV文件,在导入向导中指定「逗号」为分隔符
- 完成导入后,数据会自动按列对齐显示
内容的提问来源于stack exchange,提问作者BatchKing70
相关产品推荐
相关产品推荐

