Команда DISM используется для просмотра, установки, удаления, и настройки компонентов в образах Windows формата WIM (W indows IM aging Format). Начиная с Windows 7, утилита dism.exe (D eployment I mage S ervicing and M anagement) входит в стандартный комплект программного обеспечения установленной ОС 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 P reinstall E nvironment), из которой выполняется процесс установки самой системы с использованием содержимого файла образа с именем INSTALL.WIM. После стандартной установки Windows, создается среда восстановления Windows RE (R ecovery E nvironment), загрузка которой выполняется из образа WinRE.WIM для восстановления работоспособности при проблемах с загрузкой основной системы. Обычно образ winre.wim располагается в скрытом разделе, которому не присваивается буква логического диска.
Структура файла WIM, содержащего 2 образа:
Как видно, 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 – в документе для разработчиков программного обеспечения (в формате 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 в виде таблицы:
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:конечный_каталог_подключения
- Подключает 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} /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 (C omponent B ased S ervicing) представляет собой набор сервисных программных средств и специализированных данных, частью которого является и утилита 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.
Сканирование хранилища системных компонент. В Windows 7 кроме сканирования, выполняется еще и восстановление целостности. Данный вариант команды не выполняется и сопровождается сообщением Ошибка 87. Параметр ScanHealth не распознан в этом контексте , если в Windows 7 не установлено обновление KB2966583 .
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-протокол”.
Свежепредставленной "десятки", мы поговорим о полезной функциональной возможности популярнейшей Windows 7, взятой из арсенала Windows 8, а именно о восстановлении поврежденных компонентов при участии консольной утилиты DISM.exe . Причем функционал этот не самый новый, но совершенно обделенный вниманием всех русскоязычных IT -ресурсов. О причинах и, собственно, о самой Deployment Image Servicing and Management (англ. "система обслуживания и управления образами развертывания", DISM ) читайте в краткой заметке ниже.
Все просто: опция появилась ровно год назад с выходом апдейта KB2966583 , о чем в анонсе было сказано буквально пару слов, что и стало, из-за нелюбви к FAQ -ам, причиной молчания "родных пенат" ("первооткрыватель" DISMдля Windows 7 – блогер Вадим Стеркин). Что ж, восполним пробел в образовании и возможностях любимой "семерки", но для начала в один абзац о том, зачем все это нужно.
Начиная с Vista, развертывание и обслуживание "Окон" построено на компонентах и пакетах, определяемых манифестами (скриншот). В директории C:\Windows\winsxs находятся все файлы операционной системы, включая предыдущие версии – это и есть хранилище компонентов Windows. А хранилище пакетов в системе представлено папкой C:\Windows\servicing\Packages , где можно увидеть доступные пакеты и их манифесты. Раскрывая сказанное, пакет ом может быть исправление для ОС или драйвер, а манифест есть текстовый XML -файл, где задаются определения для компонентов и элементов развертывания. Благодаря тому, что практика апдейтов системы – вещь необходимая, и самая распространенная причина сбоя при обновлении – повреждение озвученного хранилища, утилита DISM.exe является настоящей "палкой-выручалкой " при подобных багах. После инициации KB2966583все пользователи "семерки" могут оценить сегодняшнюю героиню в действии, т.к. раньше для этого требовалось отдельное решение CheckSUR (Check for System Update Readiness), что не есть правильно.
Работаем с DISM.exe
Опять же, все просто: из-под учетной записи администратора (если вы – единственный пользователь Windows, то беспокоиться не о чем) запустите командную строку ("Пуск " → cmd в поле поиска → "Enter ") и введите, с подтверждением, команду DISM /Online /Cleanup-Image /ScanHealth → ждем окончания процесса (скриншот) → результаты работы DISM в обязательном порядке смотрите по адресу C:\Windows\Logs\CBS в файле checksur.log . Наличие в логе критического числа проблемных компонентов будет сигналом искать флешку (диск) с образом Windows или скачать нужный восстанавливающий пакет System Update Readiness Tool .
В идеале вы должны увидеть текст ("No errors detected") как на скриншоте выше, чего всем и желаю. И это все, что необходимо знать по теме любому мало-мальски опытному пользователю Windows.
Примечание: Владельцы ПК под управлением более поздней "восьмерки" для расширения кругозора могут ознакомиться со статьей "Параметры командной строки DISM для обслуживания пакетов операционной системы " из майкрософтовской MSDN -библиотеки.