You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell导出PSDrive数据到CSV格式异常求助

PowerShell导出PSDrive容量数据到CSV异常的解决方法

问题场景

执行以下PowerShell命令获取C、D盘的容量信息并格式化显示:

Get-PSDrive -Name C, D | 
Select-Object -Property Name,
@{Name="Total (GB)"; Expression={($_.Used + $_.Free) / 1gb}}, 
@{Name="Used (GB)"; Expression={$_.Used / 1gb}}, 
@{Name="Free (GB)"; Expression={$_.Free / 1gb}} |
Format-Table

控制台能正常输出格式化表格:

Name Total (GB) Used (GB) Free (GB)
---- ---------- --------- ---------
C        241.21    109.29    131.92
D        233.90      0.10    233.80

但追加Export-Csv .\Desktop\CheckDrive.csv -Encoding utf8后,导出的CSV数据完全异常,格式混乱。

问题原因

Format-Table是仅用于控制台可视化输出的命令,它会将原始的自定义对象转换为专门的格式化对象(如FormatEntryData),这些对象包含的是排版、样式相关的属性,而非我们需要的容量数据。将这类格式化对象导出到CSV,自然会得到错误的内容。

解决方法

移除管道中的Format-Table步骤,直接将Select-Object输出的原始数据对象传递给Export-Csv。同时建议添加-NoTypeInformation参数,避免CSV文件开头生成多余的类型注释行。

修正后的完整命令:

Get-PSDrive -Name C, D | 
Select-Object -Property Name,
@{Name="Total (GB)"; Expression={[math]::Round(($_.Used + $_.Free) / 1gb, 2)}}, 
@{Name="Used (GB)"; Expression={[math]::Round($_.Used / 1gb, 2)}}, 
@{Name="Free (GB)"; Expression={[math]::Round($_.Free / 1gb, 2)}} |
Export-Csv .\Desktop\CheckDrive.csv -Encoding utf8 -NoTypeInformation

注:添加[math]::Round(..., 2)是为了和控制台显示的小数位数保持一致,避免导出高精度浮点数。

导出后的CSV内容示例:

Name,Total (GB),Used (GB),Free (GB)
C,241.21,109.29,131.92
D,233.90,0.10,233.80

内容的提问来源于stack exchange,提问作者Ong K.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:22:42