如何通过PowerShell获取已挂载VHD的驱动器号?
解决PowerShell获取已挂载VHD驱动器号的问题
嘿,别担心,Get-DiskImage其实完全支持VHD/VHDX文件,你遇到的错误大概率是命令执行时的小细节问题。我给你几个可靠的解决方案:
方法一:修正原命令的过滤逻辑
你的原命令没有过滤掉无驱动器号的分区(比如系统预留分区),加上路径格式建议用反斜杠,调整后命令如下:
# 获取已挂载VHD的驱动器号 (Get-DiskImage -ImagePath "D:\tmp.vhdx" | Get-Disk | Get-Partition | Where-Object { $_.DriveLetter }) | Select-Object -ExpandProperty DriveLetter
Where-Object { $_.DriveLetter }会过滤掉没有分配驱动器号的分区,避免无效数据干扰- 用
Select-Object -ExpandProperty直接输出纯驱动器号(比如E:),而不是带属性的对象
方法二:通过磁盘的Location属性定位VHD
如果第一种方法还是有问题,可以直接通过磁盘的Location属性匹配VHD路径,这种方式更稳定:
Get-Disk | Where-Object { $_.Location -eq "D:\tmp.vhdx" } | Get-Partition | Where-Object { $_.DriveLetter } | Select-Object -ExpandProperty DriveLetter
挂载后的VHD对应的磁盘,其Location属性就是VHD文件的完整路径,通过这个可以精准定位目标磁盘。
方法三:挂载时直接获取结果
如果你是刚执行完Mount-VHD命令,可以直接用-PassThru参数返回镜像对象,一步到位获取驱动器号:
# 挂载VHD并立即获取驱动器号 Mount-VHD -Path "D:\tmp.vhdx" -PassThru | Get-Disk | Get-Partition | Where-Object { $_.DriveLetter } | Select-Object -ExpandProperty DriveLetter
-PassThru参数会让Mount-VHD返回对应的DiskImage对象,省去后续再次调用Get-DiskImage的步骤。
关于你遇到的错误
你提到的Get-DiskImage : Invalid property错误,大概率是以下原因之一:
- 路径格式错误:确保用反斜杠
\而不是正斜杠/ - VHD未完全挂载:执行命令前等待几秒,让系统完成挂载流程
- 权限不足:右键以管理员身份运行PowerShell后重试
内容的提问来源于stack exchange,提问作者Vinay
相关产品推荐
相关产品推荐

