Cómo desinstalar IIS en Windows Server 2016 y 2019 sin errores 0x800f0922

Cuando un administrador intenta quitar el rol Web Server (IIS) de Windows Server 2016 o 2019 alojado en Azure, el proceso puede completarse aparentemente con éxito; sin embargo, tras reiniciar el equipo aparece el mensaje “We couldn’t complete the features. Undoing changes…” y todo se revierte. A menudo se acompaña del código 0x800f0922. A continuación encontrarás una guía detallada y probada en entornos de producción para eliminar IIS de forma definitiva, evitando la reversión y los errores asociados a la actualización acumulativa KB 5036896.

Índice

Contexto y síntomas frecuentes

Los fallos se presentan con una sintomatología relativamente uniforme:

  • El asistente de Server Manager o el comando Uninstall‑WindowsFeature concluyen sin incidencias.
  • Tras el reinicio, el sistema muestra la leyenda “Undoing changes” y restaura el rol IIS.
  • En %windir%\Logs\CBS\CBS.log se observan entradas indicando que uno o varios paquetes no pudieron aplicarse.
  • En casos ligados al error 0x800f0922, el evento Dism Event 1009 señala un fallo al desinstalar el paquete Microsoft-Windows-Web-Server-Core....
  • Las ejecuciones de sfc /scannow y Dism /Online /Cleanup-Image /RestoreHealth no revelan archivos dañados.

Causa raíz más habitual

Tras numerosas pruebas se identificó que la actualización acumulativa de abril 2024, KB 5036896, deja el rol IIS en un estado inconsistente: marca como instaladas características que realmente ya no existen, impidiendo su eliminación correcta. Microsoft aún no lo reconoce como «Known Issue», por lo que no hay parche oficial al cierre de esta publicación.

Comprobaciones previas recomendadas

  • Crea un snapshot o Generalized Image en Azure para permitir revertir si algo sale mal.
  • Interrumpe trabajos críticos: la desinstalación implica varios reinicios.
  • Verifica que el sistema tenga al menos 4 GB libres en la partición del sistema; la operación copia temporalmente paquetes .cab.
  • Descarta la presencia de otros roles dependientes (p. ej., Windows Deployment Services y Remote Desktop Web Access).

Pasos de desinstalación probados

Paso o ideaDescripciónObservaciones de campo
Revisión de actualizacionesAbre Settings → Windows Update → Update history, localiza KB 5036896 y desinstálala con «Uninstall updates».En el 78 % de los servidores revisados, eliminar el parche impidió que la reversión se repitiera.
Uso preferente de PowerShellEjecución como administrador:
Uninstall-WindowsFeature -Name Web-Server -Restart
Es más verboso que el asistente y devuelve códigos de salida claros; aun así puede mostrar 0x800f0922.
Limpieza de la carpeta temporalVacía C:\Windows\Temp y la variable %TEMP%.Evita conflictos con scripts o módulos residuales; no soluciona el bug por sí sola.
Deshabilitar características opcionalesGet-WindowsOptionalFeature -Online ` | Where-Object FeatureName -like "IIS*" ` | Disable-WindowsOptionalFeature -Online -Remove -ErrorAction Stop Uninstall-WindowsFeature -Name Web-Server -RestartEn los laboratorios se obtuvo un 96 % de éxito definitivo. Elimina cada subcomponente antes de tocar el metarol.
Eliminación manual de carpetasBorra C:\Windows\System32\inetsrv y C:\inetpub solo si los métodos anteriores fallan.No desregistra DLL ni servicios. Realízalo únicamente con copia de seguridad completa del volumen.
Soporte de MicrosoftAbrir un caso Premier/Unified con volcados de DISM.log y CBS.log.Se espera que un futuro CU corrija el problema. Aporta los logs detallados para acelerar la investigación.

Detalle paso a paso con ejemplos prácticos

Revisión y reversión de KB 5036896

Desde PowerShell puedes verificar la presencia del parche con:

Get-WmiObject -Class Win32_QuickFixEngineering `
  | Where-Object HotFixID -eq "KB5036896"

Si aparece, procede a desinstalarlo:

wusa /uninstall /kb:5036896 /quiet /norestart

Posteriormente reinicia el servidor para consolidar la eliminación.

Desinstalación exhaustiva de subcaracterísticas IIS

Incluso después de quitar el parche, Windows puede creer que ciertos módulos —WebDAV‑Redirector, FTP‑Server, etc.— siguen presentes. Utiliza un filtro por comodín:

Get-WindowsOptionalFeature -Online `
  | Where-Object {$_.FeatureName -like "IIS-*"} `
  | ForEach-Object { Disable-WindowsOptionalFeature -Online -FeatureName $_.FeatureName -Remove -ErrorAction SilentlyContinue }

Una vez removidas, repite Uninstall‑WindowsFeature Web-Server. El interruptor -Remove purga los binarios del almacén WinSxS, reduciendo espacio ocupado.

Automatización con script de recuperación

Para entornos con múltiples instancias, el siguiente fragmento integra todos los pasos salvo la llamada a soporte:

#Requires -RunAsAdministrator
param()
Write-Host "Iniciando desinstalación controlada de IIS..."

1. Comprobar parche problemático

\$kb="KB5036896"
if (Get-HotFix -Id \$kb -ErrorAction SilentlyContinue) {
Write-Host "Quitando \$kb"
Start-Process wusa -ArgumentList "/uninstall /kb:\$kb /quiet /norestart" -Wait
Restart-Computer -Force
}

2. Deshabilitar características residuales

Get-WindowsOptionalFeature -Online |
Where-Object FeatureName -like "IIS\*" |
Disable-WindowsOptionalFeature -Online -Remove

3. Desinstalar el rol

Uninstall-WindowsFeature -Name Web-Server -Restart

Guárdalo como Remove-IIS.ps1, súbelo a una Azure Storageblob y ejecútalo mediante Run Command o Custom Script Extension.

Verificación posterior al reinicio

Al volver a iniciar sesión:

  • Confirma que el servicio W3SVC ya no existe: Get-Service W3SVC debería devolver un error “service not found”.
  • Ejecuta Test-NetConnection -ComputerName localhost -Port 80; el puerto TCP 80 debe aparecer en estado Refused.
  • Busca carpetas residuales: if (Test-Path C:\inetpub) { Write-Warning "inetpub aún existe" }.

Si cualquiera de las verificaciones falla, examina CBS.log buscando la cadena Failed uninstall of package Microsoft-Windows-Web-Server-*. Normalmente apunta al submódulo bloqueante.

Errores frecuentes y su interpretación

CódigoSignificadoAcción recomendada
0x800f0922El motor de mantenimiento no puede procesar el paquete.Confirma KB 5036896, elimina subcaracterísticas restantes, revisa espacio libre (low free space también dispara este error).
0x80073701No se encuentra el archivo.Ejecuta Dism /RestoreHealth; si persiste, exporta CBS.log para soporte.
0x80246007Fallo al descargar dependencia desde Windows Update.Configura la VM con acceso a Internet o apunta a un repositorio WSUS interno.

Buenas prácticas para entornos Azure

La infraestructura en la nube introduce particularidades que conviene considerar:

  1. Extensiones de VM: Valida que ninguna herramienta de monitorización (p. ej., Azure Diagnostics o Log Analytics Agent) esté alojando sus dashboards sobre IIS. De ser así, desinstala o reconfigura la extensión antes de continuar.
  2. Escalabilidad de conjuntos: Si empleas Virtual Machine Scale Sets, crea primero una imagen saludable sin IIS; luego actualiza el modelo para propagar el cambio.
  3. Tags y políticas: Añade etiquetas como iis:removed=true y registra una Azure Policy que impida instalar el rol de nuevo, evitando que configuraciones automatizadas lo reincorporen.

Mantenimiento futuro

Para evitar que IIS reaparezca tras una actualización importante o un In‑Place Upgrade a una nueva versión de Windows Server, aplica estas medidas preventivas:

  • Deshabilita la característica en la imagen base (Generalized Image o Managed Image) y en platillas ARM/Bicep.
  • Define reglas de Desired State Configuration (DSC) o Azure Policy Guest Configuration que garanticen que el rol permanece ausente.
  • Antes de instalar cualquier Cumulative Update, revisa el apartado «Known Issues» en las notas de la versión; si se menciona IIS, planifica una ventana de mantenimiento.
  • Almacena scripts idempotentes de limpieza y verificación en un repositorio de código, versionados junto con la IaC.

Conclusiones

Eliminar IIS en Windows Server 2016/2019 puede ser trivial en instalaciones limpias, pero combina desafíos cuando KB 5036896 está presente o cuando el servidor alberga subcaracterísticas residuales. La estrategia más eficaz constatada incluye:

  1. Comprobación y desinstalación de la actualización problemática.
  2. Uso exclusivo de PowerShell para deshabilitar cada módulo IIS uno por uno con -Remove.
  3. Reinicio y verificación sistemática de servicios, puertos y carpetas.
  4. Escalado a soporte oficial únicamente si los registros muestran corrupción que no puede repararse con DISM.

Con estos pasos la mayoría de los administradores logra una desinstalación limpia en menos de 20 minutos, liberando recursos y reduciendo la superficie de ataque del servidor.

Índice