如何通过PowerShell按分区类型名称分配可用驱动器号?
解决恢复分区分配可用盘符的问题
原脚本的问题
Set-Partition调用语法错误:必须通过-NewDriveLetter参数指定盘符,不能直接将盘符作为命令参数传递- 未提前检查盘符是否被占用,直接尝试分配,容易引发冲突
- 后续的while循环逻辑无效,无法实现预期的判断或重试功能
修正后的脚本
先获取所有已占用的盘符,再从Z到A遍历找到第一个可用盘符,分配给恢复分区:
# 获取所有已被占用的驱动器号 $usedLetters = (Get-Volume | Where-Object { $_.DriveLetter }).DriveLetter # 从Z到A遍历查找可用盘符 foreach ($letter in 90..65 | ForEach-Object { [char]$_ }) { if ($usedLetters -notcontains $letter) { # 定位恢复分区 $recoveryPartition = Get-Partition | Where-Object { $_.Type -eq "Recovery" } if ($recoveryPartition) { # 分配盘符 Set-Partition -InputObject $recoveryPartition -NewDriveLetter $letter Write-Host "已为恢复分区分配盘符: $letter" break # 分配成功后退出循环 } else { Write-Host "未找到恢复分区" break } } }
脚本说明
- 先通过
Get-Volume收集已占用盘符,确保不会分配重复的盘符 - 从Z到A遍历,优先使用靠后的盘符,避免占用C、D等常用盘符
- 找到可用盘符后立即定位恢复分区执行分配,成功后直接退出循环
- 增加了恢复分区不存在的判断,避免无意义的执行
内容的提问来源于stack exchange,提问作者Cheries
相关产品推荐
相关产品推荐

