如何用PowerShell检测超容量MBR磁盘上的未分配空间
检测超标称容量MBR磁盘的未分配空间(PowerShell方案)
针对MBR磁盘超出标称2TB容量后常规工具无法识别未分配空间的问题,以下两个PowerShell方案可直接读取磁盘物理容量与已分区容量的差值,准确计算未分配空间:
方案1:指定单磁盘检测
替换脚本中的$diskNumber为目标磁盘编号(可通过Get-Disk命令查看),运行时需管理员权限:
$diskNumber = 1 # 替换为你的目标磁盘编号 $physicalDisk = Get-PhysicalDisk -DeviceNumber $diskNumber $totalPartitionedSize = (Get-Partition -DiskNumber $diskNumber | Where-Object { $_.Type -ne 'Reserved' } | Measure-Object -Property Size -Sum).Sum $unallocatedSize = $physicalDisk.Size - $totalPartitionedSize [PSCustomObject]@{ 磁盘编号 = $diskNumber 物理总容量_GB = [math]::Round($physicalDisk.Size / 1GB, 2) 已分区总容量_GB = [math]::Round($totalPartitionedSize / 1GB, 2) 未分配空间_GB = [math]::Round($unallocatedSize / 1GB, 2) }
原理
Get-PhysicalDisk直接读取磁盘的真实物理容量(不受MBR 2TB分区表限制),再减去所有已分区的容量总和,得到真实的未分配空间大小。
方案2:批量检测所有磁盘
自动遍历系统中所有磁盘,输出每块磁盘的未分配空间:
Get-WmiObject Win32_DiskDrive | ForEach-Object { $totalSize = $_.Size $partitionedSize = ($_.GetRelated('Win32_DiskPartition') | Measure-Object -Property Size -Sum).Sum $unallocated = $totalSize - $partitionedSize [PSCustomObject]@{ 磁盘名称 = $_.Caption 物理总容量_GB = [math]::Round($totalSize / 1GB, 2) 已分区容量_GB = [math]::Round($partitionedSize / 1GB, 2) 未分配空间_GB = [math]::Round($unallocated / 1GB, 2) } }
注意事项
- 必须以管理员身份运行PowerShell,否则可能无法获取完整的磁盘硬件信息
- 若磁盘包含EFI、恢复等隐藏分区,可根据需求调整脚本中的分区过滤条件,确保统计所有已占用的分区容量
内容的提问来源于stack exchange,提问作者Fajela Tajkiya
相关产品推荐
相关产品推荐

