查找最近附加的 VHD 的系统驱动器号

查找最近附加的 VHD 的系统驱动器号

有一些脚本可以查找最近附加的 VHD 的字母这里这里。我使用以下代码从批处理脚本运行:

FOR /f usebackq %%a in (`powershell -c "GET-DISKIMAGE %VIRTUAL_MACHINE_PATH% | GET-DISK | GET-PARTITION | GET-VOLUME | Select-Object -ExpandProperty DriveLetter"`) DO SET VIRTUAL_DISK_LETTER=%%a
echo %VIRTUAL_DISK_LETTER%

但就我而言,我有一个 Windows 映像,在附加其虚拟驱动器后,我通常会有 2 个新卷:一个是大约 50Mb 的“Microsoft 保留分区”,另一个是包含 Windows 本身的系统分区。在所有情况下(我认为),“Microsoft 保留分区”都以字母开头,例如,F系统分区排在第二位,例如驱动器H。如何准确找到系统分区的字母?

更新:我想,唯一能做到我想做的就是检查卷的大小,这对我来说没问题。也许我需要类似的东西:

FOR /f usebackq %%a in (`powershell -c "GET-DISKIMAGE %VIRTUAL_MACHINE_PATH% | GET-DISK | GET-PARTITION | GET-VOLUME | Select-Object -ExpandProperty DriveLetter -ExpandProperty Size"`) DO (
    if %%a.size > 100000000(
        SET VIRTUAL_DISK_LETTER=%%a.letter
    )
)
echo %VIRTUAL_DISK_LETTER%

我想,我会花很多时间做这件事,如果有人能帮助我,我会很感激。

答案1

我最终检查了Windows分区上的文件夹:

for /f usebackq %%a in (`powershell -c "GET-DISKIMAGE %VIRTUAL_MACHINE_PATH% | GET-DISK | GET-PARTITION | GET-VOLUME | Select-Object -ExpandProperty DriveLetter"`) do (
    if exist "%%a:\Windows\" (
        set VIRTUAL_DISK_LETTER=%%a
    )
)
if "%VIRTUAL_DISK_LETTER%"=="" (
  echo Error! Couldn't find virtual disk letter.
  exit /b -2
)

相关内容