我需要在Windows 10中使用批处理脚本卸载VHD。我在网上找到的唯一解决方案是针对Windows 7的,涉及Diskpart。是否有其他可用的本机Windows命令行工具可以完成这项工作?
我需要在Windows 10中使用批处理脚本卸载VHD。我在网上找到的唯一解决方案是针对Windows 7的,涉及Diskpart。是否有其他可用的本机Windows命令行工具可以完成这项工作?
Answers:
由于我还没有找到一种完全依靠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
vMount
vMount支持许多与VHD相关的功能。它的大小(x86:432KB; x64:2.53MB)对于仅调用WinApi来说是相当大的,因此它不是我的方案的解决方案,但对其他人可能有用。
vmount detach \\.\PhysicalDriveX
磁盘部分
为了完整起见,还应提及DiskPart。它支持大量与磁盘相关的功能,但是运行起来相当缓慢,可以自动执行其他用户所需的脚本输入。如果您意外地在没有提升权限的情况下运行脚本,它也是列表中唯一会陷入循环的工具。
将以下两行保存到文本文件中:
vdisk file="C:\Example Path\Test.vhd"
detach vdisk
现在,Dism可以将文本文件解析为无人参与答案文件的形式:
DISKPART /s C:\Path_to\Name_Of_Textfile.txt
您可以使用本机Windows 10 Powershell挂载和卸载vhd / vhdx:
Import-module hyper-v
Dismount-VHD -Path 'c:\my.vhd'
从cmd / bat:
powershell -command "Import-module hyper-v; Dismount-VHD -Path 'c:\my.vhd'"
无论哪种情况,您都必须使用提升的(以管理员身份运行)提示。
要注意的另一件事是,您需要首先启用Hyper-V功能。
这是一个扩展的答案:(您应该能够收集如何卸载VHD)
如何在启动/关闭时自动挂载和卸载VHD文件。
Windows 10中的情况似乎有所变化。
首先,我应该说我正在装载存储在Linux File Server上的VHD,并通过SMB装载。
其次,非常重要的一点是,如果您在重新引导时不分离磁盘,那么当您尝试重新连接磁盘时,它会显示“文件正在使用中,无法访问”。
因此,我们需要自动挂载和卸载。卸载证明有些麻烦,因为我不能将其放在启动文件夹中。您必须使用组策略。另外,当作为“关机/启动”脚本运行时,它运行得很早,您需要在“登录/注销”下运行它
我有4个档案 C:\mount
mount.cmd
@ECHO OFF
DISKPART /s C:\mount\mount.txt
umount.cmd
@ECHO OFF
DISKPART /s C:\mount\umount.txt
umount.txt
select vdisk file="\\192.168.1.255\Blizzard.vhdx"
detach vdisk
mount.txt
select vdisk file="\\192.168.1.255\Blizzard.vhdx"
attach vdisk
现在开始输入/运行gpedit.msc
并将脚本添加到登录/注销