如何通过PowerShell原生函数获取卷的多挂载点信息?
获取Windows卷的多个挂载点(PowerShell原生方法)
我明白你的困扰:Get-Volume 和旧的 Get-WMIObject -Class Win32_Volume 有时候没法完整返回卷的所有挂载点信息(比如你提到的G:卷同时挂载在文件夹路径下的情况)。不过用PowerShell原生的CIM命令就能完美解决这个问题,不需要调用diskpart.exe。
方法1:通过Win32_Volume的AccessPaths属性获取完整挂载点
Win32_Volume类的AccessPaths属性会存储卷的所有访问路径——包括驱动器号和文件夹挂载点。用Get-CimInstance(WMI的现代替代方案)来查询:
# 获取所有拥有多个挂载点的卷,显示关键信息 Get-CimInstance -ClassName Win32_Volume | Where-Object { $_.AccessPaths.Count -gt 1 } | Select-Object DriveLetter, AccessPaths, Label, FileSystem
如果要定位特定卷(比如你的G:盘),可以加过滤条件:
# 查询G:卷的所有挂载路径 Get-CimInstance -ClassName Win32_Volume -Filter "DriveLetter = 'G:'" | Select-Object -ExpandProperty AccessPaths
执行后你会看到类似这样的输出:
G:\ D:\SQL\MSSQL13.MSSQLSERVER\DATA\ D:\BlaBla\
方法2:通过Win32_MountPoint类关联卷与挂载点
如果你想更清晰地查看每个挂载点对应的卷,可以直接查询Win32_MountPoint类,它专门记录卷到文件夹的挂载关系:
Get-CimInstance -ClassName Win32_MountPoint | ForEach-Object { # 关联对应的卷信息 $volume = Get-CimInstance -ClassName Win32_Volume -Filter "DeviceID = '$($_.Volume)'" [PSCustomObject]@{ 卷驱动器号 = $volume.DriveLetter 挂载路径 = $_.Directory 卷标签 = $volume.Label } }
为什么Get-Volume不行?
Get-Volume是Storage模块提供的简化命令,它只返回卷的默认挂载点(通常是驱动器号),不会展示所有的文件夹挂载路径。而Win32_Volume是WMI/CIM里的完整卷信息类,包含了所有底层的访问路径数据。
内容的提问来源于stack exchange,提问作者PollusB
相关产品推荐
相关产品推荐

