DISM – управление компонентами образов Windows.



Команда DISM используется для просмотра, установки, удаления, и настройки компонентов в образах Windows формата WIM (Windows IMaging Format). Начиная с Windows 7, утилита dism.exe входит в стандартный комплект программного обеспечения установленной ОС Windows. Представляет собой средство командной строки, которое может использоваться для обслуживания образов Windows и заменяет диспетчер пакетов (Pkgmgr.exe), PEimg и Intlcfg, которые включались в Windows Vista. Функциональные возможности этих средств теперь собраны в одном инструменте dism.exe. Кроме того, были добавлены новые функции, улучшающие возможности автономного обслуживания образов.

В отличие от сектор-ориентированных форматов (таких, как .iso, .tib, .bin ), образ WIM является файл-ориентированным форматом, то есть его наименьшим логическим элементом является файл. Этот формат был разработан компанией Microsoft в качестве основного средства развертывания операционных систем Windows Vista и более поздних. Его достоинствами является аппаратная независимость и возможность хранения только одной копии файла, имеющего множество ссылок в дереве файловой системы (single instance storage), что обеспечивает компактность образов и высокую скорость их развертывания.

WIM файл может включать в себя несколько образов, которые определяются по числовому индексу или уникальному имени. Технология единственной копии множества одинаковых файлов single instance storage при добавлении нового образа к существующим позволяет уменьшить размер WIM-базы, если будут присутствовать совпадающие элементы. WIM-образ может быть также разбит на несколько файлов, которым присваивается расширение .swm

WIM-образ может быть смонтирован как логический диск в среде Windows с присвоением ему буквы диска для облегчения редактирования его содержимого (благодаря этому образ WIM можно достаточно просто сконвертировать в ISO-образ). Помимо штатных утилит от Microsoft, извлечь файлы из WIM-образа можно также при помощи архиватора 7-Zip.

WIM-образы могут быть загрузочными. В частности, установка всех современных операционных систем семейства Windows выполняется с использованием файла образа с именем BOOT.WIM содержащего загрузочную версию среды предустановки Windows PE (Windows Preinstall Environment), из которой выполняется процесс установки самой системы с использованием содержимого файла образа с именем INSTALL.WIM. После стандартной установки Windows, создается среда восстановления Windows RE (Recovery Environment), загрузка которой выполняется из образа WinRE.WIM для восстановления работоспособности при проблемах с загрузкой основной системы. Обычно образ winre.wim располагается в скрытом разделе, которому не присваивается буква логического диска.

Структура файла WIM, содержащего 2 образа:

Структура файла WIM


Как видно, wim-файл содержит 6 типов содержимого :

WIM Header — заголовок wim-файла, описывающий содержимое, атрибуты, версию, размер, тип сжатия и т.п.

File Resources — последовательность пакетов, содержащих упакованные данные файлов в составе образа.

Metadata Resource — содержит информацию о файлах в составе образа, включая структуру папок и атрибуты.

Lookup Table — таблица расположений и размеров ресурсных файлов в файле .wim

XML Data — данные в формате XML с дополнительными сведениями об образе. Представляют собой несжатый текст в кодировке Unicode.

Integrity Table — таблица целостности, используемая для контроля работоспособного состояния образа

Процесс создания образа WIM можно представить следующим образом:

1. Создается заголовок WIM Header файла образа, например C:\data.wim
2. В памяти создаются метаданные при сканировании и индексировании каталога исходных данных, сворачиваемого в образ, например - C:\Sources\
3. На основе метаданных содержимое файлов из каталога исходных данных записывается с сжатием в файл образа в виде порций пакетов File Resources , и в это же время в памяти строится таблица размещения порций в образе Lookup Table
4. По завершению создания образа, таблица Lookup Table записывается из памяти в файл .wim, затем дописываются данные XML и контроля целостности.
5. Обновляется начальный заголовок файла WIM.

Процесс извлечения файлов из образа выполняется по следующему алгоритму:

1. Считывается заголовок WIM Header и определяется место расположения метаданных в образе WIM.
2. Метаданные переписываются в память компьютера и строится таблица расположения файлов внутри образа.
3. Создается структура каталогов на основе содержимого образа.
4. Файлы из образа обрабатываются с использованием построенных таблиц и переписываются в созданную структуру каталогов.

Более подробно о структуре файлов WIM – в документе для разработчиков программного обеспечения Windows Imaging File Format (WIM) (в формате PDF на английском языке).

Выполнение DISM.EXE без параметров выводит на экран краткую справку по ее использованию. Журнал утилиты сохраняется в файле C:\Windows\Logs\DISM\dism.log

Формат командной строки:

DISM.exe {/Image:путь_к_автономному_образу | /Online} [параметры_dism] {служебная_команда} [аргументы_служебной_команды]

Формат команды DISM отличается в зависимости от того, работает ли утилита с автономным образом или с данными ОС Windows (режим /Online), в среде которой выполняется DISM.EXE. Для работы утилиты требуется запуск командной строки от имени администратора.


Служебные команды для работы с образами дисков:



/Split-Image - Делит существующий файл .wim или файл .ffu на несколько файлов WIM/FFU, доступных только для чтения.

/Apply-Image - Применение новых параметров образа.

/Get-MountedImageInfo - Отображает сведения о подключенных WIM- и VHD-образах.

/Get-ImageInfo - Отображает сведения об образах в WIM- или VHD- файле.

/Commit-Image - Сохраняет изменения подключенного WIM- или VHD-образа.

/Unmount-Image - Отключает подключенный WIM- или VHD-образ.

/Mount-Image - Подключает образ из WIM- или VHD-файла.

/Remount-Image - Восстанавливает каталог подключения образа.

/Cleanup-Mountpoints - Удаляет ресурсы, связанные с поврежденными подключенными образами.


Служебные команды :



/Apply-CustomDataImage - Консервирует файлы, содержащиеся в настраиваемом образе данных.

/Capture-CustomImage - Записывает настройки в разностный WIM-файл в системе WIMBoot. Записанные каталоги включают все вложенные папки и данные.

/Get-WIMBootEntry - Выводит записи конфигурации WIMBoot для указанного тома диска.

/Update-WIMBootEntry - Обновляет запись конфигурации WIMBoot для указанного тома диска.

/List-Image - Отображает список файлов и папок в указанном образе.

/Delete-Image - Удаляет указанный образ тома из WIM-файла, содержащего несколько образов томов.

/Export-Image - Экспортирует копию указанного образа в другой wim-файл.

/Append-Image - Добавление другого образа в WIM-файл.

/Capture-Image - Записывает образ диска в новый WIM-файл. Записанные каталоги включают все подкаталоги и данные.

/Get-MountedWimInfo - Отображает сведения о подключенных из WIM образах.

/Get-WimInfo - Отображает сведения об образах в WIM-файле.

/Commit-Wim - Сохраняет изменения подключенного из WIM образа.

/Unmount-Wim - Отключает подключенный из WIM образ.

/Mount-Wim - Подключает образ из WIM-файла.

/Remount-Wim - Восстанавливает потерянный каталог подключения WIM.

/Cleanup-Wim - Удаляет ресурсы, связанные с поврежденными подключенными WIM-образами.


Спецификации образа:



/Online - Задает работающую операционную систему как назначение.

/Image - Задает путь к корневому каталогу автономного образа Windows.


Параметры DISM:



/English - Отображает данные, выводимые командной строкой, на английском языке.

/Format - Задает формат отчета. Допустимые значения - /Format:Table или /Format:List, определяют формат в виде таблицы или списка. По умолчанию используется список.

/WinDir - Задает путь к каталогу Windows.

/SysDriveDir - Задает путь к файлу системного загрузчика с именем BootMgr.

/LogPath - Задает путь к файлу журнала.

/LogLevel - Задает уровень ведения журнала событий (1-4).

/NoRestart - Запрещает автоматическую перезагрузку и вывод пользователю предложений выполнить перезагрузку.

/Quiet - Скрывает все сообщения за исключением сообщений об ошибках.

/ScratchDir - Задает путь к каталогу временных файлов.


Для получения сведений об этих параметрах DISM и их аргументах укажите требуемый параметр перед "/?".


Примеры:

DISM.exe /Mount-Wim /? – подсказка по команде /Mount-Wim
dism.exe /Format /? - отобразить справку о форматах вывода DISM.

dism.exe /Online /Get-Drivers /? - подсказка для режима вывода сведения о драйверах в образе или работающей Windows (/Online). По умолчанию выполняется извлечение списка сторонних драйверов. Чтобы вывести весь список драйверов, используйте параметр /all.

dism.exe /Online /Get-Drivers /format=table - отобразить список сторонних драйверов текущей Windows в виде таблицы :

Список сторонних драйверов образа WIM в виде таблицы


DISM.exe /List-Image /Imagefile:C:\test\images\myimage.wim /index:1 - отобразить полное содержимое первого образа из файла, заданного параметром /Imagefile:


Работа с автономными образами.



dism /mount-wim /? - отобразить подсказку по режиму подключения образов.

Пример отображаемой информации:

Cистема DISM
Версия: 10.0.10586.0
/Mount-Wim /WimFile:путь_к_WIM-файлу {/Index:индекс_образа|/Name:<имя_образа>} /MountDir:конечный_каталог_подключения [/readonly] - Подключает WIM-файл к указанному каталогу, чтобы он был доступен для обслуживания.
Используйте параметр /ReadOnly, чтобы подключаемый образ был доступен только для чтения.
Примеры: DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline
DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline /ReadOnly

DISM.exe /Mount-Wim /WimFile:D:\sources\boot.wim /MountDir:C:\test\offline - подключить к каталогу C:\test\offline содержимое образа D:\sources\boot.wim. После успешного выполнения данной команды в каталоге, задаваемом параметром /MountDir будет доступно содержимое образа из файла WIM, задаваемого параметром /WimFile и будут доступны команды для обслуживания образов.

DISM.exe /Image:C:\test\offline /? - отобразить краткую справку по командам и параметрам для обслуживания автономных образов.

DISM.exe /Image:C:\test\offline /Add-driver /? - отобразить подсказку по процедуре добавления драйвера в автономный образ.

DISM.exe /Image:C:\test\offline /Get-Features - отобразить сведения обо всех компонентах, входящих в данный образ. Для вывода сведений об отдельном пакете используется параметр /PackagePath указывающий на CAB-файл или папку.



dism /Get-MountedImageInfo - отобразить сведения о подключенных автономных образах. Пример отображаемой информации:

Подключено образов:

Каталог подключения: C:\test\offline
Файл образа: C:\test\images\myimage.wim
Индекс образа: 1
Подключен для чтения или записи: Да
Состояние: ОК
. . .



dism /unmount-wim /MountDir:C:\test\offline /commit - отключить автономный образ, подключенный к каталогу C:\test\offline с сохранением сделанных изменений ( сохранение с фиксацией, задаваемое параметром /commit).

dism /unmount-wim /MountDir:C:\test\offline /Discard - то же, что и в предыдущем примере, но без сохранения изменений в содержимом образа (сохранение без фиксации).

Добавление драйверов в образ WIM



Необходимость в добавлении драйвера возникает в тех случаях, когда установка системы или загрузка Windows PE требует наличия нестандартных драйверов, например для дисковых контроллеров SCSI и RAID или неподдерживаемых периферийных устройств. Утилита DISM позволяет легко добавить в существующий образ требуемый драйвер на основе информации из .inf файлов.

Формат команды:

DISM /Image:образ /Add-Driver {/Driver:папка_содержащая_INF | /Driver:путь_к_драйверу.inf} [/recurse] /ForceUnsigned]

Выполняется добавление нового драйвера в автономный образ, задаваемый параметром /Image:. Чтобы искать драйверы во всех вложенных папках, используйте параметр /recurse. Чтобы добавить все неподписанные драйверы в образы с архитектурой X64, используйте параметр /ForceUnsigned.

DISM.exe /Image:C:\test\offline /Add-Driver /Driver:D:\Drivers /recurse - добавить в образ все драйверы из каталога D:\Drivers и его подкаталогов.

DISM.exe /Image:C:\test\offline /Add-Driver /Driver:D:\Drivers\Usb\Usb3.inf - добавить в автономный образ драйвер на основе информации из файла D:\Drivers\Usb\Usb3.inf

DISM.exe /Image:C:\test\offline /Add-Driver /DriverName:"C:\Drivers\1.inf" /DriverName:"C:\Drivers\2.inf" /DriverName:"C:\Drivers\3.inf" - добавление нескольких драйверов в одной команде. При добавлении нескольких драйверов, их установка выполняется в том же порядке, в каком они перечисляются в командной строке DISM

Успешное выполнение DISM в режиме /Add-Driver не означает изменение в содержимом образа, поскольку для применения изменений необходимо либо отключить образ с параметром /commit, либо применить изменения с использованием параметра /Commit-Image

DISM.exe /Commit-Image /MountDir:C:\test\offline - сохранить изменения в образе, примонтированном к каталогу, заданному параметром /MountDir

Использование DISM для управления компонентами текущей ОС Windows.



Команда DISM с параметром /Online выполняется по отношению к текущей операционной системе, а не к ее образу, что позволяет выполнять обслуживание системы удаляя, добавляя или изменяя ее компоненты. Под обслуживанием Windows понимается отслеживание и исправление состояния компонентов и программных пакетов, включая все файлы системы и реестр. Система обслуживания на основе компонент или CBS (Component Based Servicing) представляет собой набор сервисных программных средств и специализированных данных, частью которого является и утилита DISM.EXE

Начальные элементы системы обслуживания компонент были реализованы еще в Windows Vista. В каждом последующем выпуске ОС их возможности расширялись, что привело к некоторым серьезным отличиям как в самой CBS, так и в использовании утилиты DISM.EXE в разных версиях ОС Windows. Часть параметров, доступных в ОС Windows 10 неприменима в среде Windows 7, хотя компания Microsoft задним числом выпустила обновления, частично реализующие новые концепции системы обслуживания, появившиеся в Windows 8, 8.1, 10. Часть возможностей обслуживания, присутствовавших в Windows 8, отсутствуют, или претерпели существенные изменения в Windows 10. Добавлю, что обслуживание Windows – это сложная, еще не совсем оформленная система, многие особенности которой не документированы и многие концепции которой могут серьезно измениться в будущем.

Краткую подсказку по использованию режима /Online для конкретной версии Windows можно получить по команде:

DISM /Online /?

Примеры использования DISM /Online для типовых операций обслуживания Windows.



В качестве хранилища компонент системы может использоваться образ WIM, данные получаемые удаленно через Центр Обновлений Windows (Windows Update), или локальное хранилище текущей Windows, представляющее собой содержимое папки %windir%\WinSxS (Стандартно – C:\Windows\WinSxS). С помощью параметра /Source можно указать расположение версий файлов, которые могут быть использованы для восстановления. Параметр /LimitAccess можно использовать для запрета обновлений из Центра обновлений Windows.

DISM.exe /Online /Cleanup-Image /CheckHealth - проверить наличие признака повреждения образа или хранилища компонент. Не применимо в Windows 7.

DISM.exe /Online /Cleanup-Image /ScanHealth - сканирование хранилища системных компонент. В Windows 7 кроме сканирования, выполняется еще и восстановление целостности. DISM.exe /Online /Cleanup-Image /RestoreHealth - проверка хранилища компонентов и автоматическое восстановление. В Windows 7 эти функции выполняет команда
DISM.exe /Online /Cleanup-Image /ScanHealth

dism.exe /Online /Cleanup-Image /StartComponentCleanup - очистить замененные компоненты и уменьшить размер хранилища ( папки \Windows\WinSxS ). Не применимо в среде Windows 7.

dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase - то же, что и в предыдущем примере, плюс сброс базы замененных компонентов. После сброса базы, установленные обновления Windows удалить невозможно.

DISM.exe /Online /Cleanup-Image /AnalyzeComponentStore - создание отчета о состоянии локального хранилища компонентов WinSxS. Возможно только для Windows 8.1 - 10. Пример отображаемой информации:

Сведения хранилища компонентов (WinSxS):
Размер хранилища компонентов по данным проводника : 5.43 GB
- размер папки WinSxS, вычисленный проводником. Оно не учитывает использование жестких связей в папке WinSxS
Фактический размер хранилища компонентов : 5.10 GB - учитывает жесткие связи в папке WinSxS.
Совместно с Windows : 3.18 GB - размер файлов, которые жестко связаны таким образом, что они отображаются как в хранилище компонентов, так и в других расположениях (для нормальной работы Windows). Оно включено в фактический размер, но не должно рассматриваться как часть служебных данных хранилища компонентов.
Резервные копии и отключенные компоненты : 1.62 GB - размер компонентов, которые хранятся для того, чтобы использоваться при сбоях в более новых компонентах или чтобы предоставлять параметр включения дополнительной функциональности. Значение также содержит размер параллельно используемых компонентов и метаданных хранилища компонентов.
Кэш и временные данные : 304.02 MB - размер файлов, которые используются хранилищем компонентов для внутренних целей, чтобы ускорить операции обслуживания компонентов. Оно включено в фактический размер и является частью служебных данных хранилища компонентов.
Дата последней очистки : 2016-10-04 09:45:15
Число освобождаемых пакетов : 3
Рекомендуется очистка хранилища компонентов : Да
Операция успешно завершена.

Использование анализа позволяет оценить необходимость очистки хранилища WinSxS и определить предельное сокращение его размера, которое не может быть больше, чем занято под Резервные копии и отключенные компоненты.

dism /Online /Get-Features - отобразить список компонентов текущей системы.
Пример отображаемой информации:

Имя функции : SNMP
Состояние : Отключен
Имя функции : TelnetClient
Состояние : Включен

В данном примере, поддержка SNMP-протокола выключена, а клиент сервера Telnet – включен.

DISM.exe /Online /Enable-Feature:SNMP - включить компонент ”SNMP-протокол”

Имеется возможность восстанавливать и включать компоненты, которые ранее были удалены из образа. Используйте аргумент /Source, чтобы задать расположение файлов, необходимых для восстановления ранее удаленного компонента. Можно указать несколько аргументов /Source. Если компонент найден в первом источнике, то остальные источники игнорируются.
Параметр /LimitAccess запрещает обращение DISM к WU/WSUS.
Параметр /All включает все родительские компоненты указанного компонента.

DISM.exe /Online /Get-Featureinfo:TelnetClient - отобразить сведения о компоненте ”Клиент Telnet”

DISM.exe /Online /Disable-Feature:SNMP - выключить компонент ”SNMP-протокол”.
















Весь список команд CMD Windows