Как отключить VHD через командную строку в Windows 10

7933
Zerobinary99

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

8
в CMD может быть сложно. Я не знаю PowerShell, но PowerShell делает так много. Например, многие ссылки говорят, что PowerShell может делать то, что вы хотите http://www.virtualizationadmin.com/kbase/VirtualizationTips/ServerVirtualization/MicrosoftHyper-VTips/Management/how-mount-virtual -hard-disk-file-using-powershell.html и https://technet.microsoft.com/en-us/library/hh848562(v=wps.630).aspx barlop 8 лет назад 0
@barlop Спасибо за ваш комментарий и ссылки. Пакет должен быть в состоянии работать в системе, где не установлен Powershell, поэтому я боюсь, что это не вариант. Zerobinary99 8 лет назад 0
Есть ли какая-то конкретная причина, почему вы не хотите использовать diskpart? например, он может работать неинтерактивно, поэтому вы можете получить пакетный файл, который выводит сценарий diskpart в файл script.txt, а затем выполняет diskpart / s script.txt. Здесь есть пример сценария diskpart https: / /technet.microsoft.com/en-us/library/dn614984.aspx barlop 8 лет назад 0
@barlop Я знаю о diskpart-решении и сейчас использую его в другой системе. Тот, на котором это предназначено для работы, не имеет дисковой части. Zerobinary99 8 лет назад 0
Я думаю, что было бы достаточно сложно даже найти стороннего, который это делает. Нативные команды довольно хорошо известны, я уверен, что нет никаких, которые делают это, кроме diskpart. Это почти чудо, что это делает diskpart. (поскольку diskpart - такая «простая» программа, как и fdisk, и люди склонны использовать ее, не обращая внимания на эту опцию. Идея, что есть другая нативная команда, которая сделает это, почти немыслима. Если вы можете поместить командный файл там, разве вы не можете поставить такую ​​программу, как diskpart? barlop 8 лет назад 0
Почему это было бы немыслимо? Это очень простая в написании программа, и существует множество доступных решений, таких как «Dismount-VHD» и «Dismount-DiskImage», которые являются инструментами командной строки в линейке серверов Microsoft. Vmount - это бесплатное стороннее решение, но это огромный исполняемый файл объемом 2,5 МБ, который также содержит ошибки и не работает должным образом в Windows 10. Diskpart поддерживает форматирование дисков, однако Microsoft также предоставила format.exe для работы без diskpart. Так почему бы не найти инструменты для других функций, таких как VHD-обработка? Редакции Сервера указывают, что они могут быть. Zerobinary99 8 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/27586/discussion-between-barlop-and-zerobinary99). barlop 8 лет назад 0
Там не будет никакого обсуждения. Возмутительные заявления, которые вы сделали в своем последнем ответе, явно основывались не на знаниях, а на незнании предмета. Я ценю ваши усилия, но если вы не способны дать ответ, то вам не следует одолевать попытки навязать мне свои решения. У меня есть свои причины для заявленных требований. Zerobinary99 8 лет назад 0
Ну, продолжайте пытаться найти родные cmd.exe способы монтирования VHD, кроме diskpart. И посмотрим, удастся ли вам barlop 8 лет назад 0
@barlop Вопрос о * размонтировании * не монтировании образов. Монтирование очень просто, просто вызвав имя виртуального жесткого диска в командном файле. Инструменты не требуются ... Zerobinary99 8 лет назад 0

3 ответа на вопрос

6
Zerobinary99

Since I haven't found a way to solely rely on MS-installed command line tools, I'll list third party solutions.


WinApiExec

WinApiExec enables the user to call the Windows API from the command line. The 32bit executable is only 3.5KB in size (x64: 5.5KB) and therefore ridiculously small, introducing as little overhead as probably possible.

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 supports quite a few VHD-related functions. Its size (x86: 432KB; x64: 2.53MB) is rather huge for merely calling WinApi, so it's not a solution for my scenario, but might be useful to other people.

vmount detach \\.\PhysicalDriveX 

DiskPart

For the sake of completeness DiskPart shall be mentioned, too. It supports a great deal of disk-related features, but has a rather sluggish way of going about it to automate the otherwise necessary user input for scripting purposes. It's also the only tool on the list that will be trapped in a loop if you accidentally run the script without elevated rights.

Save the following two lines into a text file:

vdisk file="C:\Example Path\Test.vhd" detach vdisk 

Now, Dism can parse the text file as a form of unattended answer file:

DISKPART /s C:\Path_to\Name_Of_Textfile.txt 
3
Anton Krouglov

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

От моего комментария до моего вопроса: «Пакет должен быть в состоянии работать в системе, где не установлен Powershell, поэтому я боюсь, что это не вариант». Zerobinary99 7 лет назад 0
Насколько мне известно, Powershell является неотъемлемой частью Windows 10 (вы спрашивали о Windows 10), поэтому вы _не можете _ установить или удалить ее. Однако его выполнение может быть заблокировано различными способами, такими как групповая политика. Anton Krouglov 7 лет назад 0
Почему вы ставите под сомнение условия? Есть причина для них. Я использую Windows Lite без Powershell и не хочу использовать всю платформу, которая мне не нужна, если доступны более легкие варианты Zerobinary99 7 лет назад 0
У меня есть похожая проблема. У Google есть ваш старый вопрос. Так что этот ответ может быть полезен и другим людям. Anton Krouglov 7 лет назад 1
Поскольку этому вопросу уже более двух лет и название нечеткое в отношении ваших требований, этот ответ помогает многим другим людям, равно как и мой расширенный ответ. Вы должны прочитать больше Мета обмена стека, чтобы узнать больше о том, как этот сайт работает и его политики. Подобные ответы очень полезны для сообщества @ Zerobinary99 FreeSoftwareServers 6 лет назад 0
В этом требовании нет ничего смутного. Научитесь читать и воздержитесь от ответов, если не понимаете вопроса. Я предлагаю * вам * узнать больше о политике сайта. Речь идет не о том, насколько полезны ответы для широкой публики, а о том, подходят ли они в первую очередь к вопросу, а ваши нет. Я согласен, что этот ответ имеет определенную ценность для тех, кто имеет доступ к Powershell. Zerobinary99 6 лет назад 0
1
FreeSoftwareServers

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

Теперь в start введите / run gpedit.mscи добавьте сценарии для входа / выхода

enter image description here

Спасибо за ответ, но это не решение проблемы. Я искал пакетно-совместимое решение, кроме использования Diskpart. Вы просто вставили тот же синтаксис, который уже есть в моем ответе. Zerobinary99 6 лет назад 0
Помимо использования встроенной функции Windows без использования сторонних инструментов? Кажется оксимороновой. FreeSoftwareServers 6 лет назад 0
Я просил * другие * родные функции Windows. В этом нет ничего оксюморонного. Сдается мне, что у вас есть общие проблемы с пониманием. Zerobinary99 6 лет назад 0

Похожие вопросы