Як відключити VHD за допомогою командного рядка в Windows 10


9

Мені потрібно зняти VHD з пакетним сценарієм в Windows 10. Єдине знайдене нами рішення в Інтернеті було спрямовано на Windows 7 і включало Diskpart. Чи є в наявності інші інструменти рідного командного рядка Windows, які можуть виконати цю роботу?


в cmd може бути складним. Я не знаю повноважень, але повноважень робить так багато. Наприклад, багато посилань кажуть, що powerhell може робити те, що ви хочете virtualizationadmin.com/kbase/VirtualizationTips/… та technet.microsoft.com/en-us/library/hh848562(v=wps .630) .aspx
барлоп

@barlop Дякую за коментар та посилання. Пакет повинен бути в змозі працювати в системі, де Powershell не встановлений, тому я боюся, що це не варіант.
Zerobinary99

Чи є якась конкретна причина, чому ви не хочете використовувати diskpart? наприклад, він може запускатися неінтерактивним способом, тому у вас може бути пакетний файл, який повторює скрипт diskpart у файл script.txt, потім робить diskpart / s script.txt. Тут є приклад сценарію diskpart тут technet.microsoft .com / en-us / library / dn614984.aspx
барлоп

@barlop Я знаю рішення про diskpart і зараз використовую його в іншій системі. Той, де це призначено для роботи, не має на ньому дискової частини.
Zerobinary99

Я думаю, що було б досить важко навіть знайти третьої сторони, яка це робить. Рідні команди досить добре відомі, я впевнений, що немає інших, які роблять це, крім diskpart. Майже диво, що дискпарт це робить. . там ви не можете поставити туди програму, як diskpart?
barlop

Відповіді:


6

Оскільки я не знайшов способу покластися лише на інструменти командного рядка, встановлені MS, я перелічу рішення сторонніх розробників.


WinApiExec

WinApiExec дозволяє користувачеві викликати API Windows з командного рядка. 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 .


З мого коментаря до мого запитання: "Пакет повинен бути в змозі працювати в системі, де Powershell не встановлений, тому я боюся, що це не варіант".
Zerobinary99

Наскільки мені відомо, Powershell є невід’ємною частиною Windows 10 (ви запитували про Windows 10), тому ви не можете її встановити чи видалити. Однак його виконання може бути заблоковано різними способами, наприклад, груповою політикою.
Антон Круглов

Чому ви ставите під сумнів умови? У них є причина. Я запускаю Windows Lite без Powershell, і я проти збереження цілої платформи, яка мені не потрібна, якщо доступні інші варіанти легкої ваги
Zerobinary99

1
У мене схожа проблема.googling дала ваше старе питання. Тож ця відповідь може бути корисною і іншим людям.
Антон Круглов

Оскільки цьому питанню більше двох років, а заголовок неясний щодо вашої вимоги, ця відповідь допомагає багатьом іншим людям, як і моя розширена відповідь. Ви повинні прочитати більше обміну стеками Meta, щоб дізнатися більше про те, як працює цей сайт та його політиці. Такі відповіді дуже корисні для спільноти @ Zerobinary99
FreeSoftwareServers

1

Це розгорнута відповідь: (Ви повинні мати можливість зрозуміти, як вичислити VHD)

HowTo Автоматично монтуйте та налаштовуйте VHD-файли під час завантаження / відключення.

Здається, у Windows 10 щось мало змінилося.

По-перше, я повинен сказати, що я монтую VHD, що зберігається на файловому сервері 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

Тепер у запуску введіть / run gpedit.mscта додайте сценарії для входу / відходу

введіть тут опис зображення


Дякую за відповідь, але це не є вирішенням проблеми. Я шукав сумісне з пакетом рішення, окрім використання Diskpart. Ви в основному просто вставили той самий синтаксис, який вже є в моїй відповіді.
Zerobinary99

Крім використання вбудованої функції Windows без використання сторонніх інструментів? Здається, оксиморонічний.
FreeSoftwareServers

Я просив інших функцій Windows. У цьому немає нічого оксиморонічного. Мені здається, у вас є загальні проблеми з розумінням.
Zerobinary99
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.