9

Мне нужно размонтировать VHD с помощью пакетного скрипта в Windows 10. Единственное решение, которое я нашел в Интернете, было направлено на Windows 7 и включало Diskpart. Существуют ли другие доступные инструменты командной строки Windows, которые могут выполнить эту работу?

3 ответа3

6

Поскольку я не нашел способа полагаться исключительно на средства командной строки, установленные 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
3

Вы можете монтировать и размонтировать 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.

1

Это расширенный ответ: (Вы должны быть в состоянии понять, как размонтировать 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 и добавьте сценарии для входа / выхода

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .