如何在 Windows 10 中通过命令行卸载 VHD

Zer*_*y99 10 eject vhd command-line unmount windows-10

我需要在 Windows 10 中使用批处理脚本卸载 VHD。我在网上找到的唯一解决方案是针对 Windows 7 并涉及 Diskpart。是否有任何其他本机 Windows 命令行工具可以完成这项工作?

Zer*_*y99 7

由于我还没有找到完全依赖 MS 安装的命令行工具的方法,因此我将列出第三方解决方案。


WinApiExec

WinApiExec使用户能够从命令行调用 Windows API。32 位可执行文件的大小仅为 3.5KB (x64: 5.5KB),因此小得离谱,引入的开销尽可能小。

winapiexec.exe virtdisk.dll@OpenVirtualDisk $a:2,0 "C:\Example Path\Test.vhd" 262144 0 0 $b:4 , virtdisk.dll@DetachVirtualDisk $$:7@0 0 0
Run Code Online (Sandbox Code Playgroud)

挂载

vMount支持相当多的 VHD 相关功能。它的大小(x86:432KB;x64:2.53MB)对于仅仅调用 WinApi 来说相当大,所以它不是我的场景的解决方案,但可能对其他人有用。

vmount detach \\.\PhysicalDriveX
Run Code Online (Sandbox Code Playgroud)

磁盘部分

为了完整起见,也应提及 DiskPart。它支持大量与磁盘相关的功能,但在自动执行脚本编写所需的其他用户输入方面的方式相当缓慢。如果您不小心在没有提升权限的情况下运行脚本,它也是列表中唯一会陷入循环的工具。

将以下两行保存到文本文件中:

select vdisk file="C:\Example Path\Test.vhd"
detach vdisk
Run Code Online (Sandbox Code Playgroud)

现在,Dism 可以将文本文件解析为无人值守应答文件的形式:

DISKPART /s C:\Path_to\Name_Of_Textfile.txt
Run Code Online (Sandbox Code Playgroud)