Як відключити 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.