Як я можу встановити ISO через PowerShell / програмно?


28

Як можна монтувати та демонтувати ISO-зображення із PowerShell в Windows 8 без сторонніх програм?

Оригінальна редакція цього питання мене здивувала, чи можливо встановити ISO за допомогою PowerShell в Windows 8.

Відповіді:


46

Встановити ISO з командного рядка (тільки для Windows 8/2012 і вище)

Якщо ви сидите в командному рядку та вам потрібно встановити ISO, виконайте таку команду:

PowerShell Mount-DiskImage

Це викликає командлет PowerShell. Вам буде запропоновано шлях ISO, який ви хочете встановити. Коли ви закінчите, залиште останнє порожнім і натисніть Enter.

працює командлет Mount-DiskImage

Тада! Він встановлений:

Тада!  Встановлено - "Пристрої зі знімним накопичувачем"

Демонтуйте ISO

Щоб зняти ISO з запуску PowerShell Dismount-DiskImageі дотримуйтесь підказки. Якщо ви знаєте лише літеру диска вгорі голови, а не шлях зображення, використовуйте цю команду:

Get-Volume [Drive Letter] | Get-DiskImage | Dismount-DiskImage

Ця команда захопить вказаний вами диск, знайде образ диска та демонтує його.

“Пристрої зі знімним накопичувачем” після демонтажу ISO

Встановлення декількох ISO та відображення літер диска

Ви також можете використовувати -PassThruпрапор для зберігання даних, переданих команді. Давайте змонтуємо кілька ISO, покажемо їх літери диска, виконаємо файл на одному з дисків, а потім демонтуємо всі ISO.

Встановіть ISO

 $MountedISOs=Mount-DiskImage -PassThru D:\Downloads\Ubuntu.iso,D:\Downloads\Windows8.iso,D:\Downloads\Server2012.iso

Відобразити інформацію про гучність для кожного ISO, встановленого за допомогою foreachциклу

 foreach($iso in $MountedISOs){Get-Volume -DiskImage $iso}     

Список J диск

 ls J:\

Відкрийте файл

 start wubi.exe

вихід foreach / Get-Volume та ls

Для демонтажу ISO використовуйте таку команду:

 Dismount-DiskImage $MountedISOs.ImagePath

Тестування ISO

Щоб створити простий скрипт, який перевіряє, чи ISO приєднаний і насправді це ISO (проти VHD), який я люблю використовувати -PassThruдля тимчасового зберігання об'єкта, і використовую Get-DiskImageкоманду для оновлення статусу об’єкта DiskImage. Це оновить Attachedвластивість. StorageTypeВластивість буде сказати, є чи файл є ISO або VHD в відповідно до його розширенням файлу.

за допомогою <code> -PassThru </code> та <code> Get-DiskImage </code>

StorageTypeЗ VHD 2, де ISO поверне 1. Ось висновок $UbuntuISO:
Ось вихід <code> $ UbuntuISO </code>

Це результат $tempпісля монтажу VHD: ( Mount-DiskImageтакож можна монтувати VHD!)
вихід <code> $ temp </code> після монтажу VHD

Зауважте, що Attachedвластивість вище є False, незважаючи на те, що Mount-DiskImageкоманда виконується без перешкод.

Майте на увазі, що $UbuntuISOзмінна не оновлюватиметься також:
змінна <code> $ UbuntuISO </code> не оновлюється


Technet: Mount-DiskImage

Technet: Dismount-DiskImage


6
Блін, за всі ці нові командлети в PowerShell Windows 8 починає щебетати.
sinni800

1
Ми можемо легко змонтувати зображення за допомогою команди C:\>explorer.exe imagepath, тут нам не потрібен PS, але для його відключення нам потрібен PS.
avirk

3
Чи все в Windows 8? Я маю на увазі, чи не потрібно вам встановлювати інші програми ???
Searush

2
+1 Дуже приємно! Це було саме те , що я сподівався знайти в Win8 , так що я міг би в кінцевому рахунку додати його до кінця моєї відповіді тут , але ти врятував мене від клопоту. Мені справді потрібно почати висиджувати свої навички роботи в PS. :) Редагувати: Чи є якийсь командлет для тестування внутрішніх даних та повідомлення про те, чи є файл ISO чи VHD чи щось інше, що повністю не підтримується? А може бути спосіб перевірити значення повернення Mount-DiskImage, можливо, код може бути відповідним чином розгалужений?
Каран

1
@Karan Нарешті вирішив зрозуміти, що це = D Це не збирається тестувати кишки, і, чесно кажучи, я думаю, що це надмірно. Але він дасть нам знати, чи встановлений він, і ISO проти VHD, не занурившись у поводження з помилками PowerShell.
Таннер Фолкнер

3

Зазвичай, якщо ви хочете зробити це за допомогою командного рядка, вам потрібен неінтерактивний метод. Для цього вам потрібно буде використовувати -ImagePathперемикач.

Таким чином, команда:

PowerShell Mount-DiskImage -ImagePath \"C:\AbsolutePathTo\Image.iso\"

Пам'ятайте, що якщо ви цитуєте абсолютний шлях (для вмісту пробілів та інших спеціальних символів), вам потрібно уникнути цитат.

Щоб демонтувати ізо-образ, не забудьте процитувати його:

PowerShell "Get-Volume G | Get-DiskImage | Dismount-DiskImage"

Зауважте, що нам не довелося цитувати команду в першому випадку, але це робимо у другому, оскільки |труба призведе до того, що командний рядок буде думати, що це знаходиться в контексті командного рядка, а не додавання аргументів PowerShell( до яких PowerShell автоматично з'єднується в одну команду).

Також переконайтеся, що Dismount-DiskImageправильно написано (ні kв Dismount).


Що робить перемикач -Command і навіщо працювати неінтерактивно?
Таннер Фолкнер

1
oops, не знадобилось -Command, здається, це робиться автоматично, неінтерактивна, оскільки, швидше за все, сценарій це робить, а не людина (яка може просто використовувати GUI)
ronalchn

Не забувайте простіший демонтаж також за назвою файлу:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

Для поточних крісел:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.