PowerShell脚本无法找到Recovery Partition,求解决方案
修复后的PowerShell脚本:删除Recovery Partition并转为未分配空间
核心实现逻辑
通过Windows恢复分区的标准类型ID精准定位目标分区,先解除系统占用再执行删除操作,确保脚本能稳定识别并移除Recovery Partition。
完整可执行脚本
# 需以管理员权限运行此脚本 # 定位所有Recovery Partition(标准类型ID:de94bba4-06d1-4d40-a16a-bfd50179d6ac) $recoveryPartitions = Get-Disk | Get-Partition | Where-Object { $_.TypeID -eq 'de94bba4-06d1-4d40-a16a-bfd50179d6ac' } if ($recoveryPartitions) { foreach ($partition in $recoveryPartitions) { Write-Host "检测到Recovery Partition: 磁盘$($partition.DiskNumber),分区$($partition.PartitionNumber)" # 先将分区设为脱机,避免系统占用导致删除失败 Set-Partition -DiskNumber $partition.DiskNumber -PartitionNumber $partition.PartitionNumber -IsOffline $true -ErrorAction SilentlyContinue # 强制删除分区,跳过确认提示 Remove-Partition -DiskNumber $partition.DiskNumber -PartitionNumber $partition.PartitionNumber -Confirm:$false -ErrorAction Stop Write-Host "已成功删除Recovery Partition: 磁盘$($partition.DiskNumber),分区$($partition.PartitionNumber)" } } else { Write-Host "未找到Recovery Partition" }
关键细节说明
- 权限要求:必须以管理员身份启动PowerShell,否则会因权限不足无法修改磁盘分区
- 精准定位:依赖恢复分区的标准类型ID而非驱动器号/名称,避免因OEM自定义命名导致识别失败
- 防占用处理:提前将分区设为脱机,解决系统后台进程占用分区无法删除的问题
- 批量适配:自动遍历所有磁盘上的Recovery Partition,适配多磁盘的测试机器环境
排查方案
若仍提示找不到分区:
- 执行
Get-Partition | Select-Object DiskNumber, PartitionNumber, TypeID, Size查看所有分区的类型ID,确认目标分区的实际类型ID(部分OEM厂商可能自定义类型) - 通过
Get-Disk检查磁盘的OperationalStatus,确保磁盘处于联机状态
- 执行
若删除时提示分区被占用:
- 重启机器后重新运行脚本,彻底释放系统进程对分区的占用
- 可在删除前添加
Remove-PartitionAccessPath -DiskNumber $partition.DiskNumber -PartitionNumber $partition.PartitionNumber,移除分区的挂载点后再执行删除
内容的提问来源于stack exchange,提问作者zerokool666
相关产品推荐
相关产品推荐

