Управление компонентами и образами Windows с помощью DISM и PowerShell

  1. Обзор
  2. Обозначения переменных
  3. Шаг 1: Выбор цели (/Online или /Image)
  4. Шаг 2: Просмотр компонентов (/Get-Features, /Get-FeatureInfo)
    1. Описание
    2. Основные опции
    3. Примеры
  5. Шаг 3: Включение/выключение компонентов (/Enable-Feature, /Disable-Feature)
    1. Описание
    2. Основные опции
    3. Примеры
  6. Шаг 4: Просмотр Capabilities (/Get-Capabilities, /Get-CapabilityInfo)
    1. Описание
    2. Основные опции
    3. Примеры
  7. Шаг 5: Добавление/удаление Capabilities (/Add-Capability, /Remove-Capability)
    1. Описание
    2. Основные опции
    3. Примеры
  8. Шаг 6: Ремонт образа и Component Store (/Cleanup-Image)
    1. Описание
    2. Основные опции
    3. Примеры
  9. Шаг 7: Сведения об образах (/Get-ImageInfo)
    1. Основные опции
    2. Пример
  10. Шаг 8: Монтирование/размонтирование офлайн-образа
    1. Основные опции
    2. Примеры
  11. Шаг 9: Интеграция драйверов, пакетов и языков
    1. Основные опции
    2. Примеры
  12. Шаг 10: Захват, экспорт и применение образов
    1. Основные опции
    2. Примеры
  13. Шаг 11: Эквиваленты в PowerShell
    1. Быстрая карта
    2. 11.1 Компоненты (Features)
    3. 11.2 Capabilities
    4. 11.3 Пакеты (обновления и языки)
    5. 11.4 Драйверы
    6. 11.5 Сведения и монтирование образов
  14. Итоги

Обзор

В статье параллельно рассматриваются DISM (Deployment Image Servicing and Management) и PowerShell (обёртки API DISM). Операции сгруппированы с примерами, опциями и ожидаемым поведением.

Обозначения переменных

Переменная Пример Примечание
<<IMAGE_PATH>> C:\mount или E:\Windows Путь для /Image: на офлайн-Windows (смонтированная папка или каталог Windows на другом диске)
<<FEATURE_NAME>> NetFx3 Имя компонента Windows
<<CAPABILITY_NAME>> OpenSSH.Client~~~~0.0.1.0 Расширение (FoD: Features on Demand)
<<WIM_PATH>> D:\sources\install.wim Файл образа WIM/ESD
<<INDEX>> 1 Индекс образа
<<MOUNT_DIR>> C:\mount Точка монтирования
<<DRIVER_DIR>> D:\drivers Каталог с INF драйверов
<<PACKAGE_PATH>> C:\Updates\kb5005565.cab Файл пакета обновления
<<LANG_PACK>> C:\LP\ja-jp\lp.cab CAB языкового пакета
<<SOURCE_PATH>> D:\sources\sxs Источник (например, для NetFx3)
<<APPLY_DIR>> C:\ Папка назначения
<<SCRATCH_DIR>> C:\Temp\Scratch Рабочий каталог
<<LOG_PATH>> C:\Temp\dism.log Путь к логу

Почти во всех командах доступны /ScratchDir:<<SCRATCH_DIR>> и /LogPath:<<LOG_PATH>>.


Шаг 1: Выбор цели (/Online или /Image)

Большинство команд DISM требуют явного указания цели.

Опция Значение Пример
/Online Текущая запущенная система dism /Online /Cleanup-Image /CheckHealth
/Image:<<IMAGE_PATH>> Офлайн-Windows или смонтированный образ dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse

Шаг 2: Просмотр компонентов (/Get-Features, /Get-FeatureInfo)

Описание

Получение списка компонентов и их состояния (Enabled / Disabled / DisabledWithPayloadRemoved).

Основные опции

Опция Значение Пример
/Online По активной ОС dism /Online /Get-Features
/Image:<<IMAGE_PATH>> По офлайн-образу dism /Image:C:\mount /Get-Features
/Get-Features Список компонентов dism /Online /Get-Features /Format:Table
/Get-FeatureInfo Детали компонента dism /Online /Get-FeatureInfo /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Имя компонента NetFx3
/Format:Table Табличная выдача dism /Online /Get-Features /Format:Table

Примеры

# Список всех компонентов со статусом
dism /Online /Get-Features /Format:Table

# Детали компонента NetFx3
dism /Online /Get-FeatureInfo /FeatureName:NetFx3

DisabledWithPayloadRemoved означает, что полезная нагрузка удалена — указывайте /Source.


Шаг 3: Включение/выключение компонентов (/Enable-Feature, /Disable-Feature)

Описание

Включение/отключение, например, .NET Framework 3.5 или SMB 1.0.

Основные опции

Опция Значение Пример
/Online По активной ОС dism /Online /Enable-Feature /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Имя компонента NetFx3
/All Включить зависимости
/Source:<<SOURCE_PATH>> Источник при удалённой нагрузке dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs
/LimitAccess Не использовать WU/WSUS
/Enable-Feature Включить компонент dism /Online /Enable-Feature /FeatureName:SMB1Protocol
/Disable-Feature Отключить компонент dism /Online /Disable-Feature /FeatureName:SMB1Protocol
/LogPath:<<LOG_PATH>> Путь к логу

Примеры

# Включить .NET Framework 3.5 (NetFx3) из локального источника (без интернета)
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>

# Отключить SMB1 для повышения безопасности
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>

Шаг 4: Просмотр Capabilities (/Get-Capabilities, /Get-CapabilityInfo)

Описание

Список FoD-компонентов и их состояние: RSAT, OpenSSH.Client, Language.Basic и т.д.

Основные опции

Опция Значение Пример
/Online По активной ОС dism /Online /Get-Capabilities
/Image:<<IMAGE_PATH>> По офлайн-образу dism /Image:C:\mount /Get-Capabilities
/Get-Capabilities Перечень capabilities dism /Online /Get-Capabilities /Format:Table
/Get-CapabilityInfo Детали capability dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0
/Format:Table Табличная выдача dism /Online /Get-Capabilities /Format:Table

Примеры

# Полный список
dism /Online /Get-Capabilities /Format:Table

# Детали конкретной capability
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>

Capabilities можно добавлять из Windows Update, WSUS или ISO/шары.


Шаг 5: Добавление/удаление Capabilities (/Add-Capability, /Remove-Capability)

Описание

Установка или удаление FoD (например, OpenSSH, RSAT).

Основные опции

Опция Значение Пример
/Online По активной ОС dism /Online /Add-Capability
/CapabilityName:<<CAPABILITY_NAME>> Имя capability OpenSSH.Client~~~~0.0.1.0
/Source:<<SOURCE_PATH>> ISO FoD или общая папка dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess
/LimitAccess Использовать только указанный источник
/LogPath:<<LOG_PATH>> Путь к логу

Примеры

# Добавить OpenSSH.Client
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

# Удалить ненужный RSAT
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

Шаг 6: Ремонт образа и Component Store (/Cleanup-Image)

Описание

Поиск/исправление повреждений WinSxS и оптимизация места.

Основные опции

Опция Значение Пример
/Online По активной ОС dism /Online /Cleanup-Image /CheckHealth
/CheckHealth Быстрая проверка
/ScanHealth Глубокое сканирование
/RestoreHealth Ремонт dism /Online /Cleanup-Image /RestoreHealth
/Source:<<SOURCE_PATH>> Источник ремонта
/LimitAccess Без Windows Update
/StartComponentCleanup Очистка старых обновлений
/ResetBase Фиксация базы (без отката)
/AnalyzeComponentStore Анализ размера хранилища

Примеры

# Быстрая проверка
dism /Online /Cleanup-Image /CheckHealth

# Глубокое сканирование
dism /Online /Cleanup-Image /ScanHealth

# Ремонт с указанием источника
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>

# Очистка и фиксация базы
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>

Шаг 7: Сведения об образах (/Get-ImageInfo)

Основные опции

Опция Значение Пример
/Get-ImageInfo Информация о WIM/ESD dism /Get-ImageInfo /ImageFile:install.wim
/ImageFile:<<WIM_PATH>> Целевой WIM
/Index:<<INDEX>> Нужный индекс
/LogPath:<<LOG_PATH>> Путь к логу

Пример

# Эдиции и индексы install.wim
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>

Шаг 8: Монтирование/размонтирование офлайн-образа

Основные опции

Опция Значение Пример
/Mount-Wim Монтировать WIM
/WimFile:<<WIM_PATH>> Входной WIM
/Index:<<INDEX>> Индекс образа
/MountDir:<<MOUNT_DIR>> Точка монтирования
/ReadOnly Только чтение
/Get-MountedWimInfo Текущие монтирования
/Unmount-Wim Размонтировать
/Commit Сохранить изменения
/Discard Отменить изменения

Примеры

# Монтирование для редактирования
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>

# Проверить состояние монтирований
dism /Get-MountedWimInfo

# Сохранить и размонтировать
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit

Шаг 9: Интеграция драйверов, пакетов и языков

Основные опции

Опция Значение Пример
/Online По активной ОС
/Image:<<MOUNT_DIR>> По офлайн-образу
/Add-Driver Добавить драйверы
/Driver:<<DRIVER_DIR>> Каталог с INF
/Recurse Включить подкаталоги
/Add-Package Добавить пакет/язык
/PackagePath:<<PACKAGE_PATH>> Путь к пакету
/Set-AllIntl:ja-JP Задать локаль

Примечания:

  • /Add-Driver — только офлайн.
  • /Add-Package и /Set-AllIntl работают как онлайн, так и офлайн.

Примеры

# Интеграция драйверов
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse

# Интеграция обновления
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>

# Добавление языкового пакета и установка локали
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP

Шаг 10: Захват, экспорт и применение образов

Основные опции

Опция Значение Пример
/Capture-Image Захват папки в WIM
/ImageFile:<<WIM_PATH>> Выходной WIM
/CaptureDir:<<APPLY_DIR>> Исходная папка
/Name:"<имя>" Имя образа
/Export-Image Переэкспорт/сжатие WIM
/Apply-Image Применить WIM
/Compress:max Максимальное сжатие
/ApplyDir:<<APPLY_DIR>> Папка назначения

Примеры

# Захват текущей конфигурации в WIM
dism /Capture-Image /ImageFile:D:\Custom.wim /CaptureDir:<<APPLY_DIR>> /Name:"Custom Image"

# Переэкспорт с максимальным сжатием
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max

# Применение образа
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>

Шаг 11: Эквиваленты в PowerShell

Быстрая карта

Раздел DISM PowerShell Назначение
Просмотр компонентов /Get-Features, /Get-FeatureInfo Get-WindowsOptionalFeature Список/детали
Вкл/выкл компонентов /Enable-Feature, /Disable-Feature Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature Управление
Просмотр capabilities /Get-Capabilities, /Get-CapabilityInfo Get-WindowsCapability Список/детали
Добавить/удалить capabilities /Add-Capability, /Remove-Capability Add-WindowsCapability, Remove-WindowsCapability FoD
Пакеты: просмотр/добавление /Get-Packages, /Add-Package Get-WindowsPackage, Add-WindowsPackage Обновления/языки
Драйверы: список/добавить/удалить /Get-Drivers, /Add-Driver, /Remove-Driver Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver В основном офлайн
Сведения/монтирование WIM /Get-ImageInfo, /Mount-Wim, /Unmount-Wim Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage Управление WIM

11.1 Компоненты (Features)

Get-WindowsOptionalFeature

Опция Значение Пример
-Online По активной ОС Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>>
-Path <<IMAGE_PATH>> По офлайн-образу Get-WindowsOptionalFeature -Path <<IMAGE_PATH>>
-FeatureName <<FEATURE_NAME>> Конкретный компонент -FeatureName NetFx3
# Все компоненты (online)
Get-WindowsOptionalFeature -Online

# Детали (offline)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>

Enable-/Disable-WindowsOptionalFeature

Опция Значение Пример
-Online / -Path <<IMAGE_PATH>> Выбор цели Enable-WindowsOptionalFeature -Online
-FeatureName <<FEATURE_NAME>> Имя компонента -FeatureName NetFx3
-All Включить зависимости -All
-Source <<SOURCE_PATH>> Источник нагрузки -Source <<SOURCE_PATH>>
# Включить (NetFx3 с источником)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>

# Отключить (SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

11.2 Capabilities

Get-WindowsCapability

Опция Значение Пример
-Online По активной ОС Get-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Поддержка шаблонов Get-WindowsCapability -Online -Name OpenSSH.*
-Path <<IMAGE_PATH>> По офлайн-образу Get-WindowsCapability -Path <<IMAGE_PATH>>
# Список (online)
Get-WindowsCapability -Online

# Конкретная capability
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

Add-/Remove-WindowsCapability

Опция Значение Пример
-Online / -Path <<IMAGE_PATH>> Цель Add-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Имя capability -Name OpenSSH.Client~~~~0.0.1.0
-Source <<SOURCE_PATH>> Источник FoD -Source <<SOURCE_PATH>>
# Добавить (online, при необходимости укажите источник)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

# Удалить
Remove-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

11.3 Пакеты (обновления и языки)

Get-WindowsPackage

Опция Значение Пример
-Online / -Path <<IMAGE_PATH>> Цель Get-WindowsPackage -Online
-PackagePath <<PACKAGE_PATH>> Сведения о пакете Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# Установленные пакеты (online)
Get-WindowsPackage -Online

Add-WindowsPackage

Опция Значение Пример
-Online / -Path <<IMAGE_PATH>> Цель Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
-PackagePath <<PACKAGE_PATH>> Предпочтительно .cab (также .msu)
# Интеграция обновления (online)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>

# Языковой пакет (offline)
Add-WindowsPackage -Path <<IMAGE_PATH>> -PackagePath <<LANG_PACK>>

11.4 Драйверы

Get-WindowsDriver

Опция Значение Пример
-Online / -Path <<IMAGE_PATH>> Цель Get-WindowsDriver -Path <<IMAGE_PATH>>
-All Показать все драйверы -All
# Список драйверов офлайн-образа
Get-WindowsDriver -Path <<IMAGE_PATH>> -All

Add-/Remove-WindowsDriver

Опция Значение Пример
-Path <<IMAGE_PATH>> Образ-цель Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
-Driver <<DRIVER_DIR>> Каталог INF
-Recurse Включить подкаталоги
-Driver <<oem*.inf>> (Remove) Удаляемый INF Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
# Добавление (offline)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse

# Удаление (offline)
Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf

Важно: у Add-/Remove-WindowsDriver нет варианта -Online; практическое применение — офлайн.


11.5 Сведения и монтирование образов

Get-WindowsImage

Опция Значение Пример
-ImagePath <<WIM_PATH>> Путь к WIM/ESD Get-WindowsImage -ImagePath <<WIM_PATH>>
-Index <<INDEX>> Конкретный индекс -Index <<INDEX>>
# Все индексы в install.wim
Get-WindowsImage -ImagePath <<WIM_PATH>>

Mount-/Dismount-WindowsImage

Опция Значение
-ImagePath <<WIM_PATH>> Входной WIM
-Index <<INDEX>> Индекс для монтирования
-Path <<MOUNT_DIR>> Точка монтирования
-ReadOnly Только чтение
-ScratchDirectory <<SCRATCH_DIR>> Рабочий каталог
-Save (Dismount) Сохранить изменения
-Discard (Dismount) Отменить изменения
# Монтирование
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>

# Сохранить и размонтировать
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save

Итоги

  • DISM — низкоуровневое управление компонентами ОС, WIM, обновлениями и драйверами.
  • PowerShell (API DISM) — те же возможности с упором на скриптование и автоматизацию.
  • Capabilities (FoD) — функции по требованию (OpenSSH, RSAT, языковые пакеты).