В этой статье рассмотрим, как с помощью DISM и PowerShell разобраться, какие образы Windows (версии, разрядности, редакции, языки) хранятся в ISO или WIM файлах. И если в имени ISO файла не указана версия и билд, то сложно понять какая версия Windows находится внутри. В этом случае проще всего придется смонтировать ISO файл с установочным образом Windows и получить данные из установочного файла install.wim.
Щелкните по ISO образу правой клавишей и выберите Mount.
Перед вами откроется окно содержимого виртуального диска, в который смонтирован ISO образ Windows. Перейдите в каталог Sources и найдите установочный файл с образом Windows. Файл называется install и может иметь одно из следующих расширений:
-
install.wim
-
install.esd
-
install.swm
Зажмите на клавиатуре Shift, щелкните по файлу install.xxx правой кнопкой мыши и скопируйте путь к файлу, выбрав Copy as path.
Откройте командную строку с правами администратора и выполните команду (в качестве пути к файлу используйте путь из буфера обмена):
DISM /Get-WimInfo /WimFile:"D:\sources\install.esd"
Перед вами появится список редакций (Education, Home, Enterprise, Pro и т.д.), доступных для установки из этого ISO образа Windows. В нашем примере из этого образа можно установить 5 разных редакций Windows. У каждой редакции есть индекс, по которому можно получить информацию об этом образе.
Чтобы получить информацию о версии (билде) и доступных языках Windows в WIM/ESD файле в редакции с индексом 1, выполните:
dism /Get-WimInfo /WimFile:"D:\sources\install.esd" /index:1
В нашем примере вы определили, что это Windows 10 2004 Education (Version: 10.0.19041), в установочном образе доступны русская (ru-RU) и английские (en-US) версии.
Также вы можете получить всю информацию о версиях и редакциях Windows в установочном ISO файле с помощью простого PowerShell скрипта, который все делает сам.
Задайте путь к ISO файлу:
$imagePath = "C:\Distr\iso\WindowsServer_RTM.iso"
Смонтируйте ISO образ:
$Report = @()
$beforeMount = (Get-Volume).DriveLetter
$mountResult = Mount-DiskImage $imagePath -PassThru
$afterMount = (Get-Volume).DriveLetter
$ImageDrive= "$(($afterMount -join '').replace(($beforeMount -join ''), '')):"
Вы получили букву диска, куда смонтирован образ (буква назначилась автоматически, если нет смотрите как это починить здесь).
Теперь получим информацию о версиях Windows в файле install.wim или install.esd:
$WinImages = Get-windowsimage -ImagePath "$ImageDrive\sources\install.wim”
Foreach ($WinImage in $WinImages)
{
$curImage=Get-WindowsImage -ImagePath "$ImageDrive\sources\install.wim” -Index $WinImage.ImageIndex
$objImage = [PSCustomObject]@{
ImageIndex = $curImage.ImageIndex
ImageName = $curImage.ImageName
Version = $curImage.Version
Languages=$curImage.Languages
Architecture =$curImage.Architecture
}
$Report += $objImage
}
Отмонтировать ISO образ:
Dismount-DiskImage $mountResult.ImagePath
Можно вывести результат в таблицу Out-GridView:
$Report | Out-GridView
В результате мы получили красивый список образов Windows в ISO файле и их версии. В нашем примере в ISO образе оказался Windows Server 2022 RTM.
Шикарно!
100%
А я всегда правая кнопка по setup.exe — свойства, и версия файла. Пока не врало)
а тут через PS аж замутили! сразу видно, тру айтишники, не то что мы с тобой))
Ну там, правда, только версию видно, а через PS ещё редакции
И «Windows 10», и «Windows Server 2019» покажут «версия файла — 10». Так что только dism покажет точную информацию о дистрибутиве.
В скрипте ошибка!
Теперь получим информацию о версиях Windows в файле install.wim или install.esd:
$WinImages = Get-windowsimage -ImagePath «$ImageDrive\sources\install.wim”
Foreach ($WinImage in $WinImages)
Ошибка строка 1 символ 13 или 14…
Спасибо
А как узнать именно версию, которая указана в установленной windos 10 пуск-параметры-о программе-характеристики windows-версия? 1909 или 21H2 и тд.
команда
winver