- Resumen
- Notación de variables
- Paso 1: Seleccionar el destino (/Online o /Image)
- Paso 2: Consultar funcionalidades (/Get-Features, /Get-FeatureInfo)
- Paso 3: Habilitar o deshabilitar funcionalidades (/Enable-Feature, /Disable-Feature)
- Paso 4: Consultar Capabilities (/Get-Capabilities, /Get-CapabilityInfo)
- Paso 5: Agregar o quitar Capabilities (/Add-Capability, /Remove-Capability)
- Paso 6: Reparación de imagen y Component Store (/Cleanup-Image)
- Paso 7: Información de imágenes (/Get-ImageInfo)
- Paso 8: Montaje y desmontaje de imágenes fuera de línea
- Paso 9: Integración de controladores, paquetes e idiomas
- Paso 10: Capturar, exportar y aplicar imágenes
- Paso 11: Equivalentes en PowerShell
- Conclusión
Resumen
Este artículo aborda en paralelo DISM (Deployment Image Servicing and Management) y PowerShell (envoltorios de la API de DISM), organizando operaciones frecuentes con ejemplos, opciones y comportamiento esperado.
Notación de variables
| Variable | Ejemplo | Nota |
|---|---|---|
<<IMAGE_PATH>> |
C:\mount o E:\Windows |
Ruta para /Image: que apunta a un Windows fuera de línea (carpeta montada o directorio Windows en otro disco) |
<<FEATURE_NAME>> |
NetFx3 |
Nombre de la funcionalidad de Windows |
<<CAPABILITY_NAME>> |
OpenSSH.Client~~~~0.0.1.0 |
Funcionalidad bajo demanda (FoD: Features on Demand) |
<<WIM_PATH>> |
D:\sources\install.wim |
Archivo de imagen WIM/ESD |
<<INDEX>> |
1 |
Índice de imagen |
<<MOUNT_DIR>> |
C:\mount |
Directorio de montaje |
<<DRIVER_DIR>> |
D:\drivers |
Carpeta con INF de controladores |
<<PACKAGE_PATH>> |
C:\Updates\kb5005565.cab |
Archivo de paquete de actualización |
<<LANG_PACK>> |
C:\LP\ja-jp\lp.cab |
CAB de paquete de idioma |
<<SOURCE_PATH>> |
D:\sources\sxs |
Ruta de origen (p. ej., NetFx3) |
<<APPLY_DIR>> |
C:\ |
Destino de aplicación |
<<SCRATCH_DIR>> |
C:\Temp\Scratch |
Carpeta de trabajo |
<<LOG_PATH>> |
C:\Temp\dism.log |
Ruta del registro |
Casi todos los comandos aceptan
/ScratchDir:<<SCRATCH_DIR>>y/LogPath:<<LOG_PATH>>.
Paso 1: Seleccionar el destino (/Online o /Image)
Muchos comandos de DISM requieren especificar explícitamente el destino.
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
Sistema Windows en ejecución | dism /Online /Cleanup-Image /CheckHealth |
/Image:<<IMAGE_PATH>> |
Windows fuera de línea o imagen montada | dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse |
Paso 2: Consultar funcionalidades (/Get-Features, /Get-FeatureInfo)
Descripción
Obtiene la lista de funcionalidades instalables y su estado (Enabled / Disabled / DisabledWithPayloadRemoved).
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
Contra el SO activo | dism /Online /Get-Features |
/Image:<<IMAGE_PATH>> |
Contra una imagen fuera de línea | dism /Image:C:\mount /Get-Features |
/Get-Features |
Muestra el listado | dism /Online /Get-Features /Format:Table |
/Get-FeatureInfo |
Detalle de una funcionalidad | dism /Online /Get-FeatureInfo /FeatureName:NetFx3 |
/FeatureName:<<FEATURE_NAME>> |
Nombre de la funcionalidad | NetFx3 |
/Format:Table |
Salida tabular | dism /Online /Get-Features /Format:Table |
Ejemplos
# Listar todas las funcionalidades con su estado
dism /Online /Get-Features /Format:Table
# Ver el detalle de NetFx3
dism /Online /Get-FeatureInfo /FeatureName:NetFx3
El estado
DisabledWithPayloadRemovedindica que faltan archivos de la funcionalidad y se requiere/Source.
Paso 3: Habilitar o deshabilitar funcionalidades (/Enable-Feature, /Disable-Feature)
Descripción
Activa o desactiva funcionalidades como .NET Framework 3.5 o SMB 1.0.
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
SO activo | dism /Online /Enable-Feature /FeatureName:NetFx3 |
/FeatureName:<<FEATURE_NAME>> |
Funcionalidad a gestionar | NetFx3 |
/All |
Incluye dependencias | |
/Source:<<SOURCE_PATH>> |
Origen para payload eliminado | dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs |
/LimitAccess |
No usa Windows Update/WSUS | |
/Enable-Feature |
Habilitar | dism /Online /Enable-Feature /FeatureName:SMB1Protocol |
/Disable-Feature |
Deshabilitar | dism /Online /Disable-Feature /FeatureName:SMB1Protocol |
/LogPath:<<LOG_PATH>> |
Ruta del log |
Ejemplos
# Habilitar .NET Framework 3.5 (NetFx3) con origen local (sin internet)
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>
# Deshabilitar SMB1 para hardening
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>
Paso 4: Consultar Capabilities (/Get-Capabilities, /Get-CapabilityInfo)
Descripción
Lista componentes FoD y su estado, por ejemplo RSAT, OpenSSH.Client, Language.Basic.
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
SO activo | dism /Online /Get-Capabilities |
/Image:<<IMAGE_PATH>> |
Imagen fuera de línea | dism /Image:C:\mount /Get-Capabilities |
/Get-Capabilities |
Lista de capabilities | dism /Online /Get-Capabilities /Format:Table |
/Get-CapabilityInfo |
Detalle de una capability | dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0 |
/Format:Table |
Salida tabular | dism /Online /Get-Capabilities /Format:Table |
Ejemplos
# Lista completa
dism /Online /Get-Capabilities /Format:Table
# Detalle de una capability concreta
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>
Las capabilities pueden agregarse desde Windows Update, WSUS o una ISO/compartido.
Paso 5: Agregar o quitar Capabilities (/Add-Capability, /Remove-Capability)
Descripción
Instala o elimina FoD como OpenSSH o herramientas RSAT.
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
SO activo | dism /Online /Add-Capability |
/CapabilityName:<<CAPABILITY_NAME>> |
Capability objetivo | OpenSSH.Client~~~~0.0.1.0 |
/Source:<<SOURCE_PATH>> |
ISO FoD o recurso compartido | dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess |
/LimitAccess |
Solo usa el origen especificado | |
/LogPath:<<LOG_PATH>> |
Ruta del log |
Ejemplos
# Agregar OpenSSH.Client
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>
# Quitar un RSAT innecesario
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>
Paso 6: Reparación de imagen y Component Store (/Cleanup-Image)
Descripción
Detecta/corrige corrupción del WinSxS y optimiza espacio.
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
SO activo | dism /Online /Cleanup-Image /CheckHealth |
/CheckHealth |
Comprobación rápida | |
/ScanHealth |
Examen detallado | |
/RestoreHealth |
Reparación | dism /Online /Cleanup-Image /RestoreHealth |
/Source:<<SOURCE_PATH>> |
Origen para reparación | |
/LimitAccess |
Sin Windows Update | |
/StartComponentCleanup |
Limpia actualizaciones antiguas | |
/ResetBase |
Fija la base (sin rollback) | |
/AnalyzeComponentStore |
Analiza tamaño del almacén |
Ejemplos
# Comprobación rápida
dism /Online /Cleanup-Image /CheckHealth
# Escaneo detallado
dism /Online /Cleanup-Image /ScanHealth
# Reparar especificando origen
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>
# Limpieza y fijación de base
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>
Paso 7: Información de imágenes (/Get-ImageInfo)
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Get-ImageInfo |
Muestra info de WIM/ESD | dism /Get-ImageInfo /ImageFile:install.wim |
/ImageFile:<<WIM_PATH>> |
Archivo WIM objetivo | |
/Index:<<INDEX>> |
Índice objetivo | |
/LogPath:<<LOG_PATH>> |
Ruta del log |
Ejemplo
# Ver ediciones e índices de install.wim
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>
Paso 8: Montaje y desmontaje de imágenes fuera de línea
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Mount-Wim |
Monta un WIM | |
/WimFile:<<WIM_PATH>> |
WIM de origen | |
/Index:<<INDEX>> |
Índice a montar | |
/MountDir:<<MOUNT_DIR>> |
Carpeta de montaje | |
/ReadOnly |
Solo lectura | |
/Get-MountedWimInfo |
Ver montajes actuales | |
/Unmount-Wim |
Desmontar | |
/Commit |
Guardar cambios | |
/Discard |
Descartar cambios |
Ejemplos
# Montar para edición
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>
# Estado de montajes
dism /Get-MountedWimInfo
# Guardar y desmontar
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit
Paso 9: Integración de controladores, paquetes e idiomas
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Online |
Contra el SO activo | |
/Image:<<MOUNT_DIR>> |
Contra imagen fuera de línea | |
/Add-Driver |
Agregar controladores | |
/Driver:<<DRIVER_DIR>> |
Carpeta con INF | |
/Recurse |
Incluye subcarpetas | |
/Add-Package |
Integrar paquete/idioma | |
/PackagePath:<<PACKAGE_PATH>> |
Ruta del paquete | |
/Set-AllIntl:ja-JP |
Establece configuración regional |
Notas:
/Add-Driveres solo para imágenes fuera de línea./Add-Packagey/Set-AllIntlfuncionan en modo online y offline.
Ejemplos
# Integrar controladores
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse
# Integrar actualización
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>
# Agregar paquete de idioma y fijar locale
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP
Paso 10: Capturar, exportar y aplicar imágenes
Opciones principales
| Opción | Significado | Ejemplo |
|---|---|---|
/Capture-Image |
Captura una carpeta a WIM | |
/ImageFile:<<WIM_PATH>> |
WIM de salida | |
/CaptureDir:<<APPLY_DIR>> |
Carpeta origen | |
/Name:"<nombre>" |
Nombre de la imagen | |
/Export-Image |
Reexporta/comprime un WIM | |
/Apply-Image |
Aplica un WIM | |
/Compress:max |
Compresión máxima | |
/ApplyDir:<<APPLY_DIR>> |
Destino de aplicación |
Ejemplos
# Capturar configuración actual
dism /Capture-Image /ImageFile:D:\Custom.wim /CaptureDir:<<APPLY_DIR>> /Name:"Custom Image"
# Reexportar con compresión
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max
# Aplicar imagen
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>
Paso 11: Equivalentes en PowerShell
Mapa rápido
| Área | DISM | PowerShell | Objetivo |
|---|---|---|---|
| Consultar funcionalidades | /Get-Features, /Get-FeatureInfo |
Get-WindowsOptionalFeature |
Listado/detalle |
| Habilitar/deshabilitar funcionalidades | /Enable-Feature, /Disable-Feature |
Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature |
Activar/desactivar |
| Consultar capabilities | /Get-Capabilities, /Get-CapabilityInfo |
Get-WindowsCapability |
Listado/detalle |
| Agregar/quitar capabilities | /Add-Capability, /Remove-Capability |
Add-WindowsCapability, Remove-WindowsCapability |
Gestionar FoD |
| Consultar/agregar paquetes | /Get-Packages, /Add-Package |
Get-WindowsPackage, Add-WindowsPackage |
Integrar updates/idiomas |
| Controladores: listar/agregar/quitar | /Get-Drivers, /Add-Driver, /Remove-Driver |
Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver |
Principalmente offline |
| Info/montaje de imágenes | /Get-ImageInfo, /Mount-Wim, /Unmount-Wim |
Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage |
Gestión de WIM |
11.1 Funcionalidades (Features)
Get-WindowsOptionalFeature
| Opción | Significado | Ejemplo |
|---|---|---|
-Online |
SO activo | Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>> |
-Path <<IMAGE_PATH>> |
Imagen offline | Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> |
-FeatureName <<FEATURE_NAME>> |
Funcionalidad concreta | -FeatureName NetFx3 |
# Todas las funcionalidades (online)
Get-WindowsOptionalFeature -Online
# Detalle específico (offline)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>
Enable-/Disable-WindowsOptionalFeature
| Opción | Significado | Ejemplo |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
Selección de destino | Enable-WindowsOptionalFeature -Online |
-FeatureName <<FEATURE_NAME>> |
Nombre de funcionalidad | -FeatureName NetFx3 |
-All |
Incluye dependencias | -All |
-Source <<SOURCE_PATH>> |
Origen del payload | -Source <<SOURCE_PATH>> |
# Habilitar (NetFx3 con origen)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>
# Deshabilitar (SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
11.2 Capabilities
Get-WindowsCapability
| Opción | Significado | Ejemplo |
|---|---|---|
-Online |
SO activo | Get-WindowsCapability -Online |
-Name <<CAPABILITY_NAME>> |
Soporta comodines | Get-WindowsCapability -Online -Name OpenSSH.* |
-Path <<IMAGE_PATH>> |
Imagen offline | Get-WindowsCapability -Path <<IMAGE_PATH>> |
# Listado (online)
Get-WindowsCapability -Online
# Solo una capability
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
Add-/Remove-WindowsCapability
| Opción | Significado | Ejemplo |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
Destino | Add-WindowsCapability -Online |
-Name <<CAPABILITY_NAME>> |
Capability | -Name OpenSSH.Client~~~~0.0.1.0 |
-Source <<SOURCE_PATH>> |
Origen FoD | -Source <<SOURCE_PATH>> |
# Agregar (online, con origen si es necesario)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
# Quitar
Remove-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
11.3 Paquetes (actualizaciones e idiomas)
Get-WindowsPackage
| Opción | Significado | Ejemplo |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
Destino | Get-WindowsPackage -Online |
-PackagePath <<PACKAGE_PATH>> |
Info del paquete | Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>> |
# Listar paquetes instalados (online)
Get-WindowsPackage -Online
Add-WindowsPackage
| Opción | Significado | Ejemplo |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
Destino | Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>> |
-PackagePath <<PACKAGE_PATH>> |
Preferible .cab (también .msu) |
# Integrar actualización (online)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# Paquete de idioma (offline)
Add-WindowsPackage -Path <<IMAGE_PATH>> -PackagePath <<LANG_PACK>>
11.4 Controladores
Get-WindowsDriver
| Opción | Significado | Ejemplo |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
Destino | Get-WindowsDriver -Path <<IMAGE_PATH>> |
-All |
Muestra todos los controladores | -All |
# Listar controladores de una imagen offline
Get-WindowsDriver -Path <<IMAGE_PATH>> -All
Add-/Remove-WindowsDriver
| Opción | Significado | Ejemplo |
|---|---|---|
-Path <<IMAGE_PATH>> |
Imagen objetivo | Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse |
-Driver <<DRIVER_DIR>> |
Carpeta con INF | |
-Recurse |
Incluye subcarpetas | |
-Driver <<oem*.inf>> (Remove) |
INF a eliminar | Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf |
# Agregar (offline)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
# Eliminar (offline)
Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
Importante:
Add-/Remove-WindowsDriverno ofrecen-Online; su uso práctico es offline.
11.5 Información y montaje de imágenes
Get-WindowsImage
| Opción | Significado | Ejemplo |
|---|---|---|
-ImagePath <<WIM_PATH>> |
Ruta de WIM/ESD | Get-WindowsImage -ImagePath <<WIM_PATH>> |
-Index <<INDEX>> |
Índice concreto | -Index <<INDEX>> |
# Todos los índices de install.wim
Get-WindowsImage -ImagePath <<WIM_PATH>>
Mount-/Dismount-WindowsImage
| Opción | Significado |
|---|---|
-ImagePath <<WIM_PATH>> |
WIM de entrada |
-Index <<INDEX>> |
Índice a montar |
-Path <<MOUNT_DIR>> |
Carpeta de montaje |
-ReadOnly |
Solo lectura |
-ScratchDirectory <<SCRATCH_DIR>> |
Carpeta de trabajo |
-Save (Dismount) |
Guardar cambios |
-Discard (Dismount) |
Descartar cambios |
# Montar
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>
# Guardar y desmontar
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save
Conclusión
- DISM: gestión de bajo nivel de componentes del SO, WIM, actualizaciones y controladores.
- PowerShell (API de DISM): mismas capacidades con foco en scripting y automatización.
- Capabilities (FoD): funcionalidades bajo demanda como OpenSSH, RSAT y paquetes de idiomas.
