Gerenciar recursos e imagens do Windows com DISM e PowerShell

Visão geral

Este artigo coloca lado a lado o DISM (Deployment Image Servicing and Management) e os cmdlets do PowerShell (wrappers sobre a API do DISM), organizando tarefas frequentes com exemplos, opções e comportamento.

Notação de variáveis

Variável Exemplo Observação
<<IMAGE_PATH>> C:\mount ou E:\Windows Caminho para /Image: apontando a um Windows offline (pasta montada ou diretório Windows em outro disco)
<<FEATURE_NAME>> NetFx3 Nome do recurso do Windows
<<CAPABILITY_NAME>> OpenSSH.Client~~~~0.0.1.0 Extensão do SO (FoD: Features on Demand)
<<WIM_PATH>> D:\sources\install.wim Arquivo WIM/ESD
<<INDEX>> 1 Índice do image
<<MOUNT_DIR>> C:\mount Diretório de montagem
<<DRIVER_DIR>> D:\drivers Pasta contendo drivers INF
<<PACKAGE_PATH>> C:\Updates\kb5005565.cab Pacote de atualização
<<LANG_PACK>> C:\LP\ja-jp\lp.cab CAB de idioma
<<SOURCE_PATH>> D:\sources\sxs Fonte (ex.: NetFx3)
<<APPLY_DIR>> C:\ Destino de aplicação
<<SCRATCH_DIR>> C:\Temp\Scratch Pasta de trabalho
<<LOG_PATH>> C:\Temp\dism.log Caminho do log

Quase todos os comandos aceitam /ScratchDir:<<SCRATCH_DIR>> e /LogPath:<<LOG_PATH>>.


Step 1: Selecionar o alvo (/Online vs. /Image)

Opção Significado Exemplo
/Online O Windows em execução dism /Online /Cleanup-Image /CheckHealth
/Image:<<IMAGE_PATH>> Windows offline ou image montada dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse

Step 2: Consultar recursos (/Get-Features, /Get-FeatureInfo)

Essência

Listar recursos instaláveis e seu estado (Enabled / Disabled / DisabledWithPayloadRemoved).

Opções principais

Opção Significado Exemplo
/Online Contra o SO ativo dism /Online /Get-Features
/Image:<<IMAGE_PATH>> Contra image offline dism /Image:C:\mount /Get-Features
/Get-Features Exibir lista dism /Online /Get-Features /Format:Table
/Get-FeatureInfo Detalhes de um recurso dism /Online /Get-FeatureInfo /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Recurso alvo NetFx3
/Format:Table Saída tabular dism /Online /Get-Features /Format:Table

Exemplos

# Todos os recursos com estado
dism /Online /Get-Features /Format:Table

# Detalhe do NetFx3
dism /Online /Get-FeatureInfo /FeatureName:NetFx3

DisabledWithPayloadRemoved requer fornecer uma fonte via /Source.


Step 3: Ativar/desativar recursos (/Enable-Feature, /Disable-Feature)

Essência

Gerenciar recursos como .NET Framework 3.5 e SMB 1.0.

Opções principais

Opção Significado Exemplo
/Online SO ativo dism /Online /Enable-Feature /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Recurso alvo NetFx3
/All Incluir dependências
/Source:<<SOURCE_PATH>> Fonte para payload removido dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs
/LimitAccess Não usar Windows Update/WSUS
/Enable-Feature Ativar dism /Online /Enable-Feature /FeatureName:SMB1Protocol
/Disable-Feature Desativar dism /Online /Disable-Feature /FeatureName:SMB1Protocol
/LogPath:<<LOG_PATH>> Caminho do log

Exemplos

# .NET Framework 3.5 com fonte local, sem internet
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>

# Desativar SMB1 (hardening)
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>

Step 4: Consultar capabilities (/Get-Capabilities, /Get-CapabilityInfo)

Essência

Exibir componentes FoD (p.ex., RSAT, OpenSSH.Client, Language.Basic) e seus estados.

Opções principais

Opção Significado Exemplo
/Online Contra o SO ativo dism /Online /Get-Capabilities
/Image:<<IMAGE_PATH>> Contra image offline dism /Image:C:\mount /Get-Capabilities
/Get-Capabilities Lista de capabilities dism /Online /Get-Capabilities /Format:Table
/Get-CapabilityInfo Detalhe de uma capability dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0
/Format:Table Saída tabular dism /Online /Get-Capabilities /Format:Table

Exemplos

# Lista
dism /Online /Get-Capabilities /Format:Table

# Detalhe
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>

Capabilities podem ser adicionadas via Windows Update, WSUS ou ISO/compartilhamento.


Step 5: Adicionar/remover capabilities (/Add-Capability, /Remove-Capability)

Essência

Instalar/remover componentes FoD como OpenSSH e RSAT.

Opções principais

Opção Significado Exemplo
/Online SO ativo dism /Online /Add-Capability
/CapabilityName:<<CAPABILITY_NAME>> Capability alvo OpenSSH.Client~~~~0.0.1.0
/Source:<<SOURCE_PATH>> ISO FoD ou compartilhamento dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess
/LimitAccess Usar apenas a fonte indicada
/LogPath:<<LOG_PATH>> Caminho do log

Exemplos

# Adicionar OpenSSH.Client
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

# Remover um RSAT desnecessário
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

Step 6: Verificar/reparar o Component Store (/Cleanup-Image)

Essência

Detectar/corrigir corrupção no WinSxS e otimizar espaço.

Opções principais

Opção Significado Exemplo
/Online SO ativo dism /Online /Cleanup-Image /CheckHealth
/CheckHealth Verificação rápida
/ScanHealth Verificação profunda
/RestoreHealth Executar reparo dism /Online /Cleanup-Image /RestoreHealth
/Source:<<SOURCE_PATH>> Fonte para reparo
/LimitAccess Sem Windows Update
/StartComponentCleanup Limpar updates antigos
/ResetBase Fixar base (sem rollback)
/AnalyzeComponentStore Análise de tamanho

Exemplos

# Checagem rápida
dism /Online /Cleanup-Image /CheckHealth

# Verificação profunda
dism /Online /Cleanup-Image /ScanHealth

# Reparar com fonte
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>

# Limpeza e base fixa
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>

Step 7: Exibir informações do image (/Get-ImageInfo)

Opções principais

Opção Significado Exemplo
/Get-ImageInfo Informações de WIM/ESD dism /Get-ImageInfo /ImageFile:install.wim
/ImageFile:<<WIM_PATH>> Arquivo alvo
/Index:<<INDEX>> Índice alvo
/LogPath:<<LOG_PATH>> Caminho do log

Exemplo

# Conferir edições e índices
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>

Step 8: Montar/desmontar image offline

Opções principais

Opção Significado Exemplo
/Mount-Wim Montar WIM
/WimFile:<<WIM_PATH>> WIM de origem
/Index:<<INDEX>> Índice alvo
/MountDir:<<MOUNT_DIR>> Caminho de montagem
/ReadOnly Montar somente leitura
/Get-MountedWimInfo Status das montagens
/Unmount-Wim Desmontar
/Commit Salvar alterações
/Discard Descartar alterações

Exemplos

# Montar
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>

# Status
dism /Get-MountedWimInfo

# Salvar e desmontar
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit

Step 9: Integrar drivers, pacotes e idiomas

Opções principais

Opção Significado Exemplo
/Online Contra o SO ativo
/Image:<<MOUNT_DIR>> Contra image offline
/Add-Driver Adicionar drivers
/Driver:<<DRIVER_DIR>> Pasta com INFs
/Recurse Incluir subpastas
/Add-Package Integrar update/idioma
/PackagePath:<<PACKAGE_PATH>> Caminho do pacote
/Set-AllIntl:ja-JP Definir locale

Observações:

  • /Add-Driver é somente offline.
  • /Add-Package e /Set-AllIntl funcionam online e offline.

Exemplos

# Integrar drivers
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse

# Integrar pacote de atualização
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>

# Taalpakket + locale
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP

Step 10: Capturar, exportar e aplicar image

Opções principais

Opção Significado Exemplo
/Capture-Image Capturar pasta em um WIM
/ImageFile:<<WIM_PATH>> WIM de saída
/CaptureDir:<<APPLY_DIR>> Diretório de origem
/Name:"<Nome>" Nome do image
/Export-Image Reexportar/compactar WIM
/Apply-Image Aplicar WIM
/Compress:max Compressão máxima
/ApplyDir:<<APPLY_DIR>> Destino de aplicação

Exemplos

# Capturar
dism /Capture-Image /ImageFile:D:\Custom.wim /CaptureDir:<<APPLY_DIR>> /Name:"Custom Image"

# Exportar com compactação
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max

# Aplicar
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>

Step 11: Equivalentes no PowerShell

Mapeamento

Área DISM PowerShell Objetivo
Consultar recursos /Get-Features, /Get-FeatureInfo Get-WindowsOptionalFeature Lista/detalhes
Ativar/desativar recursos /Enable-Feature, /Disable-Feature Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature Habilitar/desabilitar
Consultar capabilities /Get-Capabilities, /Get-CapabilityInfo Get-WindowsCapability Lista/detalhes
Adicionar/remover capabilities /Add-Capability, /Remove-Capability Add-WindowsCapability, Remove-WindowsCapability Gerir FoD
Consultar/adicionar pacotes /Get-Packages, /Add-Package Get-WindowsPackage, Add-WindowsPackage Integrar updates/idiomas
Drivers listar/integrar/remover /Get-Drivers, /Add-Driver, /Remove-Driver Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver Principalmente offline
Info/montagem de image /Get-ImageInfo, /Mount-Wim, /Unmount-Wim Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage Gerir WIM

11.1 Recursos (Features)

Get-WindowsOptionalFeature

Opção Significado Exemplo
-Online Contra o SO ativo Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>>
-Path <<IMAGE_PATH>> Contra image offline Get-WindowsOptionalFeature -Path <<IMAGE_PATH>>
-FeatureName <<FEATURE_NAME>> Único recurso -FeatureName NetFx3
# Todos os recursos (online)
Get-WindowsOptionalFeature -Online

# Recurso específico (offline)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>

Enable-/Disable-WindowsOptionalFeature

Opção Significado Exemplo
-Online / -Path <<IMAGE_PATH>> Selecionar alvo Enable-WindowsOptionalFeature -Online
-FeatureName <<FEATURE_NAME>> Recurso -FeatureName NetFx3
-All Incluir dependências -All
-Source <<SOURCE_PATH>> Fonte do payload -Source <<SOURCE_PATH>>
# Ativar (NetFx3 com fonte)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>

# Desativar (SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

11.2 Capabilities

Get-WindowsCapability

Opção Significado Exemplo
-Online SO ativo Get-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Aceita curingas Get-WindowsCapability -Online -Name OpenSSH.*
-Path <<IMAGE_PATH>> Image offline Get-WindowsCapability -Path <<IMAGE_PATH>>
# Lista (online)
Get-WindowsCapability -Online

# Única capability
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

Add-/Remove-WindowsCapability

Opção Significado Exemplo
-Online / -Path <<IMAGE_PATH>> Alvo Add-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Capability -Name OpenSSH.Client~~~~0.0.1.0
-Source <<SOURCE_PATH>> Fonte FoD -Source <<SOURCE_PATH>>
# Adicionar (online, fonte se necessário)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

# Remover
Remove-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

11.3 Pacotes (updates/idiomas)

Get-WindowsPackage

Opção Significado Exemplo
-Online / -Path <<IMAGE_PATH>> Alvo Get-WindowsPackage -Online
-PackagePath <<PACKAGE_PATH>> Detalhes do pacote Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# Pacotes instalados (online)
Get-WindowsPackage -Online

Add-WindowsPackage

Opção Significado Exemplo
-Online / -Path <<IMAGE_PATH>> Alvo Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
-PackagePath <<PACKAGE_PATH>> .cab preferível (também .msu)
# Update (online)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>

# Pacote de idioma (offline)
Add-WindowsPackage -Path <<IMAGE_PATH>> -PackagePath <<LANG_PACK>>

11.4 Drivers

Get-WindowsDriver

Opção Significado Exemplo
-Online / -Path <<IMAGE_PATH>> Alvo Get-WindowsDriver -Path <<IMAGE_PATH>>
-All Mostrar todos os drivers -All
# Lista de drivers de um image offline
Get-WindowsDriver -Path <<IMAGE_PATH>> -All

Add-/Remove-WindowsDriver

Opção Significado Exemplo
-Path <<IMAGE_PATH>> Image alvo Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
-Driver <<DRIVER_DIR>> Pasta com INF
-Recurse Incluir subpastas
-Driver <<oem*.inf>> (Remove) INF a remover Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
# Adicionar (offline)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse

# Remover (offline)
Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf

Importante: Add-/Remove-WindowsDriver não possuem parâmetro -Online; na prática, o gerenciamento por esses cmdlets é offline.


11.5 Informações & montagem de image

Get-WindowsImage

Opção Significado Exemplo
-ImagePath <<WIM_PATH>> Caminho de WIM/ESD Get-WindowsImage -ImagePath <<WIM_PATH>>
-Index <<INDEX>> Único image -Index <<INDEX>>
# Todos os índices do install.wim
Get-WindowsImage -ImagePath <<WIM_PATH>>

Mount-/Dismount-WindowsImage

Opção Significado
-ImagePath <<WIM_PATH>> WIM de entrada
-Index <<INDEX>> Índice alvo
-Path <<MOUNT_DIR>> Caminho de montagem
-ReadOnly Somente leitura
-ScratchDirectory <<SCRATCH_DIR>> Pasta de trabalho
-Save (Dismount) Salvar alterações
-Discard (Dismount) Descartar alterações
# Montar
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>

# Salvar e desmontar
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save

Conclusão

  • DISM: controle de baixo nível para componentes do SO, WIM, updates e drivers.
  • PowerShell (API do DISM): mesmas funções com foco em script e automação.
  • Capabilities (FoD): recursos sob demanda como OpenSSH, RSAT e pacotes de idiomas.