Как смонтировать ISO-образ на указанную букву диска в Powershell?

У меня есть ISO-образ (в данном случае MS Office ISO), который я хочу смонтировать.

Я хотел бы использовать Powershell и указать назначение буквы диска во время монтирования, чтобы я мог использовать команды сценариев для файлов на смонтированном ISO (диске), после чего я хотел бы демонтировать ISO.

Как это можно сделать?

Предыстория: Я хочу выполнить сценарий установки MS Office, используя ISO-образ.

0
задан 23 May 2019 в 02:26
5 ответов

Следующие команды Powershell монтируют указанный образ ISO в указанный буква диска. Команда mountvol требует повышения прав, поэтому запустите Powershell от имени администратора :

# ISO image - replace with path to ISO to be mounted
$isoImg = "D:\en_visio_professional_2019_x86_x64_dvd_3b951cef.iso"
# Drive letter - use desired drive letter
$driveLetter = "Y:"

# Mount the ISO, without having a drive letter auto-assigned
$diskImg = Mount-DiskImage -ImagePath $isoImg  -NoDriveLetter

# Get mounted ISO volume
$volInfo = $diskImg | Get-Volume

# Mount volume with specified drive letter (requires Administrator access)
mountvol $driveLetter $volInfo.UniqueId

#
#
# Do work (e.g. MS Office installation - omitted for brevity)
#
#

# Unmount drive
DisMount-DiskImage -ImagePath $isoImg  

Справочная информация: это была полезная ссылка: https://www.derekseaman.com/2010 /04/change-volume-drive-letter-with.html

3
ответ дан 4 December 2019 в 12:15

Я не мог заставить вышеупомянутое работать (Powershell 5 на WS2016), это перестало работать на...

mountvol $driveLetter $volInfo.UniqueId

... Несмотря на то, чтобы быть выполненным как Администратор.

, Но это действительно работало

Get-WmiObject -Class Win32_volume -Filter 'DriveType=5' |
  Select-Object -First 1 |
  Set-WmiInstance -Arguments @{DriveLetter='Z:'}
0
ответ дан 4 December 2019 в 12:15

также можно пропустить доступ через букву диска, например:

$imgDevice = Mount-DiskImage -ImagePath 'C:\SomeIso.iso' -NoDriveLetter -PassThru;
# dir content - do note the added ending backslash:
Get-ChildItem "$($imgDevice.DevicePath)\"
0
ответ дан 16 October 2020 в 18:02

Это рабочая версия (по крайней мере для меня)

    $isoImg = "C:\OrdinaDBA\ISO\en_sql_server_2019_developer_x64_dvd_baea4195.iso"
    $driveLetter = "X:\" # note the added ending backslash: mount fails if its not there :(
    
    
    #Check if elevated
    [Security.Principal.WindowsPrincipal]$user = [Security.Principal.WindowsIdentity]::GetCurrent();
    $Admin = $user.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator);
    
    if ($Admin) 
    {
        Write-Host "Administrator rights detected, continuing install.";
        
        Write-Host "Mount the ISO, without having a drive letter auto-assigned";
        $diskImg = Mount-DiskImage -ImagePath $isoImg  -NoDriveLetter -PassThru;
    
        #Write-Host "Get mounted ISO volume";
        $volInfo = $diskImg | Get-Volume
    
        #Write-Host "Mount volume with specified drive letter";
        mountvol $driveLetter $volInfo.UniqueId
      
        
        #Start-Sleep -Seconds 1
        #<do work>
        #Start-Sleep -Seconds 1
    
        Write-Host "DisMount ISO volume"; 
        DisMount-DiskImage -ImagePath $isoImg  # not used because SQL install is in an other powershell session
    
        Write-Host "Done";
        exit 0;
    
    }
    else
    {
        Write-Error "This script must be executed as Administrator.";
        exit 1;
    }
0
ответ дан 8 October 2021 в 08:03

Здесь вы можете найти всю информацию о командлете Get-DiskImage: Get-DiskImage

Эта команда дает вам букву диска:

(Get-DiskImage -ImagePath "E:\vhd1.vhdx" | Get-Disk | Get-Partition | Get-Volume).DriveLetter
0
ответ дан 3 December 2021 в 13:11

Теги

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