Команда 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