Мне нужно размонтировать VHD с помощью пакетного скрипта в Windows 10. Единственное решение, которое я нашел в Интернете, было направлено на Windows 7 и включало Diskpart. Существуют ли другие доступные инструменты командной строки Windows, которые могут выполнить эту работу?
3 ответа
Поскольку я не нашел способа полагаться исключительно на средства командной строки, установленные MS, я перечислю сторонние решения.
WinApiExec
WinApiExec позволяет пользователю вызывать Windows API из командной строки. Размер 32-битного исполняемого файла составляет всего 3,5 КБ (x64: 5,5 КБ), и поэтому он смехотворно мал, создавая как можно меньшие накладные расходы.
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
Для полноты картины следует упомянуть и DiskPart. Он поддерживает множество функций, связанных с дисками, но имеет довольно медленный способ автоматизировать другие необходимые пользовательские вводы для сценариев. Это также единственный инструмент в списке, который будет захвачен в цикле, если вы случайно запустите скрипт без повышенных прав.
Сохраните следующие две строки в текстовом файле:
vdisk file="C:\Example Path\Test.vhd"
detach vdisk
Теперь Dism может анализировать текстовый файл как форму файла ответов без присмотра:
DISKPART /s C:\Path_to\Name_Of_Textfile.txt
Вы можете монтировать и размонтировать VHD / VHDX, используя Windows 10 Powershell:
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, и монтирую поверх 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
и добавьте сценарии для входа / выхода