本文目录导读:

- Windows - PowerShell(获取已挂载ISO/VHD路径)
- Linux - 查找已挂载的ISO/镜像路径
- macOS - 获取DMG/ISO路径
- 通用跨平台方法(Python)
- 批处理文件(Windows)
- 注意事项
Windows - PowerShell(获取已挂载ISO/VHD路径)
# 获取所有已挂载的磁盘映像
Get-DiskImage | Where-Object {$_.Attached -eq $true} | Select-Object DevicePath, ImagePath
# 仅获取ISO文件路径
Get-DiskImage | Where-Object {$_.ImagePath -like '*.iso' -and $_.Attached} | ForEach-Object {
Write-Host "ISO文件: $($_.ImagePath)"
}
# 获取所有vhd/vhdx文件路径
Get-DiskImage | Where-Object {$_.ImagePath -like '*.vhd*' -and $_.Attached} |
Select-Object ImagePath, Size, Attached, StorageType
Linux - 查找已挂载的ISO/镜像路径
# 方法1:查看mount输出
mount | grep -E '\.iso|\.img|\.vhd' | awk '{print $1}'
# 方法2:查找loop设备关联的镜像
losetup -a | awk -F'[():]' '{print $1}'
# 方法3:使用findmnt(更详细)
findmnt -t iso9660,udf,squashfs -o TARGET,SOURCE -l | grep -E '\.iso|\.img'
macOS - 获取DMG/ISO路径
# 获取所有挂载的磁盘映像
hdiutil info | grep 'image-path' | awk -F': ' '{print $2}'
# 更详细的输出(含设备映射)
hdiutil info -plist | grep -A1 'image-path' | grep string | sed 's/<[^>]*>//g' | xargs
通用跨平台方法(Python)
import os
import platform
import subprocess
def get_image_paths():
"""获取当前挂载的磁盘映像路径"""
system = platform.system()
if system == 'Windows':
import win32com.client
wmi = win32com.client.GetObject("winmgmts:")
images = []
for img in wmi.ExecQuery("SELECT * FROM Win32_DiskImage"):
if img.Attached:
images.append(img.ImagePath)
return images
elif system == 'Linux':
result = subprocess.run(['losetup', '-a'], capture_output=True, text=True)
paths = []
for line in result.stdout.strip().split('\n'):
if line:
path = line.split('(')[1].split(')')[0]
paths.append(path)
return paths
elif system == 'Darwin': # macOS
result = subprocess.run(['hdiutil', 'info', '-plist'],
capture_output=True, text=True)
import plistlib
data = plistlib.loads(result.stdout.encode())
return [img.get('image-path') for img in data.get('images', [])
if img.get('image-path')]
# 使用示例
for path in get_image_paths():
print(f"映像路径: {path}")
批处理文件(Windows)
@echo off :: 获取ISO/VHD文件路径(需要管理员权限) echo 已挂载的磁盘映像: wmic diskimage where "attached=TRUE" get imagepath /format:list :: 或者使用diskpart(更底层) echo list image > %temp%\dp.txt diskpart /s %temp%\dp.txt del %temp%\dp.txt
注意事项
- 管理员/root权限:某些操作(如Windows的WMI查询)需要管理员权限
- 实时性:只能获取当前已挂载的映像,不包括未挂载的映像文件
- 路径格式:Windows路径通常包含盘符,Linux/macOS为绝对路径
- 性能考虑:Linux下如果有很多loop设备,建议添加过滤条件
选择哪种方法取决于你的操作系统和具体需求,如果需要实时监控映像挂载状态,建议使用事件驱动的API(如Windows的WMI事件或Linux的inotify)。