28

Как я могу подключить и отключить ISO-образы из PowerShell в Windows 8 без сторонних программ?

Оригинальная версия этого вопроса заставила меня задуматься, возможно ли смонтировать ISO-образ через PowerShell в Windows 8.

2 ответа2

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> после монтирования виртуального жесткого диска

Обратите внимание, что свойство Attached выше имеет значение False , несмотря на то, что команда Mount-DiskImage работает без заминки.

Помните, что переменная $UbuntuISO также не будет обновляться:
переменная <code> $ UbuntuISO </code> не обновляется


Technet: Mount-DiskImage

Technet: Dismount-DiskImage

3

Обычно, если вы хотите сделать это через командную строку, вам нужен неинтерактивный метод. Вы захотите использовать переключатель -ImagePath для этого.

Таким образом, команда:

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

Помните, что если вы указываете абсолютный путь (для пробелов и других специальных символов), вам нужно экранировать кавычки.

Чтобы демонтировать ISO-образ, не забудьте процитировать его:

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

Обратите внимание, что нам не нужно было заключать команду в кавычки в первом случае, но мы делаем во втором, потому что | pipe заставит командную строку думать, что она находится в контексте командной строки, а не как дополнительные аргументы в PowerShell (которые PowerShell автоматически объединяет в одну команду).

Также убедитесь, что правильно Dismount-DiskImage (нет символа k в Dismount).

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