Команда DISM используется для просмотра, установки, удаления, и настройки компонентов в образах Windows формата WIM (Windows IMaging Format). Начиная с Windows 7, утилита dism.exe ( Deployment Image Servicing and Management ) входит в стандартный комплект программного обеспечения установленной ОС 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-файл содержит 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. Файлы из образа обрабатываются с использованием построенных таблиц и переписываются в созданную структуру каталогов.

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

1. Описание команды DISM.

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

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

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

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

  • /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 — Удаляет ресурсы, связанные с поврежденными подключенными образами.

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

  • /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-образами.

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

  • /Online — Задает работающую операционную систему как назначение.
  • /Image — Задает путь к корневому каталогу автономного образа Windows.

1.4. Параметры DISM.

  • /English — Отображает данные, выводимые командной строкой, на английском языке.
  • /Format — Задает формат отчета. Допустимые значения — /Format:Table или /Format:List, определяют формат в виде таблицы или списка. По умолчанию используется список.
  • /WinDir — Задает путь к каталогу Windows.
  • /SysDriveDir — Задает путь к файлу системного загрузчика с именем BootMgr.
  • /LogPath — Задает путь к файлу журнала.
  • /LogLevel — Задает уровень ведения журнала событий (1-4).
  • /NoRestart — Запрещает автоматическую перезагрузку и вывод пользователю предложений выполнить перезагрузку.
  • /Quiet — Скрывает все сообщения за исключением сообщений об ошибках.
  • /ScratchDir — Задает путь к каталогу временных файлов.

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

2. Примеры.

2.1. подсказка по команде /Mount-Wim:

C:\ DISM.exe /Mount-Wim /?

2.2. Отобразить справку о форматах вывода DISM.

C:\ DISM.exe /Format /?

2.3. подсказка для режима вывода сведения о драйверах в образе или работающей Windows (/Online):

C:\ DISM.exe /Online /Get-Drivers /?

По умолчанию выполняется извлечение списка сторонних драйверов. Чтобы вывести весь список драйверов, используйте параметр /all.

2.4. Отобразить список сторонних драйверов текущей Windows в виде таблицы :

C:\ DISM.exe /Online /Get-Drivers /format=table

2.5. Отобразить полное содержимое первого образа из файла, заданного параметром /Imagefile:

C:\ DISM.exe /List-Image /Imagefile:C:\test\images\myimage.wim /index:1

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

3.1. Отобразить подсказку по режиму подключения образов:

C:\ 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

3.2. Подключить к каталогу C:\test\offline содержимое образа D:\sources\boot.wim:

C:\ DISM.exe /Mount-Wim /WimFile:D:\sources\boot.wim /MountDir:C:\test\offline

После успешного выполнения данной команды в каталоге, задаваемом параметром /MountDir будет доступно содержимое образа из файла WIM, задаваемого параметром /WimFile и будут доступны команды для обслуживания образов.

3.3. Отобразить краткую справку по командам и параметрам для обслуживания автономных образов:

C:\ DISM.exe /Image:C:\test\offline /?

3.4. Отобразить подсказку по процедуре добавления драйвера в автономный образ:

C:\ DISM.exe /Image:C:\test\offline /Add-driver /?

3.5. Отобразить сведения обо всех компонентах, входящих в данный образ:

C:\ DISM.exe /Image:C:\test\offline /Get-Features

Для вывода сведений об отдельном пакете используется параметр /PackagePath указывающий на CAB-файл или папку.

3.6. Отобразить сведения о подключенных автономных образах.

C:\ dism /Get-MountedImageInfo

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

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

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

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

C:\ dism /unmount-wim /MountDir:C:\test\offline /commit

3.8. То же, что и в предыдущем примере, но без сохранения изменений в содержимом образа (сохранение без фиксации):

C:\ dism /unmount-wim /MountDir:C:\test\offline /Discard

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

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

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

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

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

4.1. Добавить в образ все драйверы из каталога D:\Drivers и его подкаталогов:

C:\ DISM.exe /Image:C:\test\offline /Add-Driver /Driver:D:\Drivers /recurse

4.2. Добавить в автономный образ драйвер на основе информации из файла D:\Drivers\Usb\Usb3.inf:

C:\ DISM.exe /Image:C:\test\offline /Add-Driver /Driver:D:\Drivers\Usb\Usb3.inf - 

4.3. Добавление нескольких драйверов в одной команде:

C:\ 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

4.4. Сохранить изменения в образе, примонтированном к каталогу, заданному параметром /MountDir:

C:\ DISM.exe /Commit-Image /MountDir:C:\test\offline - 

5. Использование 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 можно получить по команде:

C:\ DISM /Online /?

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

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

6.1. Проверить наличие признака повреждения образа или хранилища компонент. Не применимо в Windows 7:

C:\ DISM.exe /Online /Cleanup-Image /CheckHealth

6.2. Сканирование хранилища системных компонент:

C:\ DISM.exe /Online /Cleanup-Image /ScanHealth

В Windows 7 кроме сканирования, выполняется еще и восстановление целостности. Данный вариант команды не выполняется и сопровождается сообщением Ошибка 87. Параметр ScanHealth не распознан в этом контексте, если в Windows 7 не установлено обновление KB2966583.

6.3. Проверка хранилища компонентов и автоматическое восстановление:

C:\ DISM.exe /Online /Cleanup-Image /RestoreHealth

В Windows 7 эти функции выполняет команда:

C:\ DISM.exe /Online /Cleanup-Image /ScanHealth

6.4. Очистить замененные компоненты и уменьшить размер хранилища ( папки \Windows\WinSxS ):

C:\ DISM.exe /Online /Cleanup-Image /StartComponentCleanup

Не применимо в среде Windows 7.

6.5. То же, что и в предыдущем примере, плюс сброс базы замененных компонентов:

C:\ DISM.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

После сброса базы, установленные обновления Windows удалить невозможно.

6.6. Создание отчета о состоянии локального хранилища компонентов WinSxS:

C:\ DISM.exe /Online /Cleanup-Image /AnalyzeComponentStore

Возможно только для 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 и определить предельное сокращение его размера, которое не может быть больше, чем занято под Резервные копии и отключенные компоненты.

6.7. Отобразить список компонентов текущей системы.

C:\ DISM.EXE /Online /Get-Features

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

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

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

6.8. Включить компонент ”SNMP-протокол”:

C:\ DISM.exe /Online /Enable-Feature:SNMP

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

Параметр /LimitAccess запрещает обращение DISM к WU/WSUS.

Параметр /All включает все родительские компоненты указанного компонента.

6.9. Отобразить сведения о компоненте ”Клиент Telnet”:

C:\ DISM.exe /Online /Get-Featureinfo:TelnetClient

6.10. Выключить компонент ”SNMP-протокол”:

C:\ DISM.exe /Online /Disable-Feature:SNMP