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

如何将WMI查询输出的磁盘大小转换为GB单位显示?

如何将WMI获取的磁盘大小格式化为GB单位?

嗨,我来帮你搞定这个问题!你已经用Get-WMIObject筛选出了本地磁盘(DriveType=3代表固定磁盘),现在要把字节数的大小转成GB其实很简单,主要是利用PowerShell的内置常量和计算能力就行。

Win32_LogicalDisk返回的Size和FreeSpace属性都是以字节为单位的,我们只需要把它们除以PowerShell内置的1GB常量(它等价于102410241024字节),再用[math]::Round()来控制小数位数,就能得到美观的GB格式输出了。

给你一个完整的脚本示例:

# 可以把$Computer换成你要查询的远程计算机名
$Computer = $env:COMPUTERNAME

Get-WMIObject -ComputerName $Computer -Class Win32_LogicalDisk | 
    Where-Object {$_.DriveType -eq 3} |
    Select-Object DeviceID, 
        @{Name='Size(GB)'; Expression={[math]::Round($_.Size / 1GB, 2)}},
        @{Name='FreeSpace(GB)'; Expression={[math]::Round($_.FreeSpace / 1GB, 2)}},
        VolumeName

关键部分解释:

  • 用Select-Object创建自定义属性:Name是最终显示的列名,Expression里写具体的计算逻辑
  • [math]::Round($_.Size / 1GB, 2):把字节数转成GB后保留2位小数,你可以把数字2改成其他值来调整精度(比如1位或者不保留小数)

另外提一句,如果你用的是PowerShell 3.0及以上版本,更推荐用Get-CimInstance代替Get-WMIObject——它是WMI的现代替代方案,性能更好,语法几乎一致:

$Computer = $env:COMPUTERNAME

Get-CimInstance -ComputerName $Computer -ClassName Win32_LogicalDisk | 
    Where-Object {$_.DriveType -eq 3} |
    Select-Object DeviceID, 
        @{Name='Size(GB)'; Expression={[math]::Round($_.Size / 1GB, 2)}},
        @{Name='FreeSpace(GB)'; Expression={[math]::Round($_.FreeSpace / 1GB, 2)}},
        VolumeName

如果想让输出更整齐,还可以在最后加上| Format-Table -AutoSize,让表格列自适应宽度,可读性更强。

内容的提问来源于stack exchange,提问作者Luciferation

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:54:29