¿Te topaste con el temido ERROR (hresult:80004001, message: Command execution failed. Not implemented)
al intentar ejecutar %windir%\system32\inetsrv\appcmd list requests
? A continuación encontrarás el origen del fallo y la guía definitiva—probada en entornos de producción—para restaurar por completo la funcionalidad de Request Monitor en IIS.
Síntoma
Al solicitar la lista de peticiones activas con appcmd list requests
:
%windir%\system32\inetsrv\appcmd list requests
IIS devuelve el resultado:
ERROR ( hresult:80004001, message: Command execution failed. Not implemented )
- No se registran errores extra en el Visor de Eventos (Canal Application ↦ Microsoft‑Windows‑IIS‑Configuration Warnings).
- La consola se ejecuta con privilegios de Administrador.
- Los servicios WAS y W3SVC están iniciados.
Causa principal
El código 0x80004001
corresponde a E_NOTIMPL
: la función requerida no está implementada porque el módulo Request Monitor no se encuentra instalado, se eliminó su payload o la edición del sistema operativo no lo admite (p. ej. Windows 10 Home o una imagen Server Core mínima).
Solución paso a paso
Paso | Acción recomendada | Detalle |
---|---|---|
1 | Confirmar la presencia de Request Monitor | En Server Manager navega a Manage ► Add Roles and Features ► Web Server (IIS) ► Health and Diagnostics ► Request Monitor. Alternativamente, en PowerShell o CMD: dism /online /Get-Features | find "IIS-RequestMonitor" Enabled → el componente está instalado.Disabled o Disabled with Payload Removed → falta instalarlo o el payload se suprimió con /Remove . |
2 | Instalar o habilitar la característica | Vía GUI: marca Request Monitor y finaliza el asistente. Vía CMD/PowerShell: dism /online /Enable-Feature /FeatureName:IIS-RequestMonitor Si el payload fue quitado: dism /online /Add-Package /PackagePath:X:\sources\sxs (o imagen WSUS).Finaliza con iisreset para recargar los módulos nativos. |
3 | Verificar operación | Ejecuta de nuevo:%windir%\system32\inetsrv\appcmd list requests Deberías ver una lista similar a: REQUEST “00000005” (time:00:00:01, addr:10.0.0.42, os200) GET /Default.aspx Si no hay peticiones activas se mostrará una salida vacía sin error. |
4 | Opciones de diagnóstico alternativas | Failed Request Tracing (FREB): habilitar a nivel de sitio para capturar los 50 eventos más recientes. HTTPERR logs: revisa %SystemRoot%\System32\LogFiles\HTTPERR para errores de capa Kernel Mode. Debug Diag Tool: genera volcados ante cuelgues o consumo elevado de CPU. Performance Counters: monitorea W3WP Requests Queued y Requests Active para alertas proactivas. |
Inspección detallada de DISM y PowerShell
La consulta con dism
indica el estado real del componente; sin embargo, para automatizar un clúster de granja Web conviene usar PowerShell DSC o Ansible. Ejemplo rápido:
Get-WindowsFeature -IIS-RequestMonitor | Where-Object {$_.InstallState -ne 'Installed'} | Install-WindowsFeature ‑IncludeAllSubFeature ‑Restart:$false
Compatibilidad por ediciones de Windows
- Windows Server 2012 R2 ► 2025: la característica está disponible en todas las ediciones (Standard, Datacenter, Essentials) salvo Server Core con la capa mínima (FOD quitará el payload).
- Windows 10/11 Pro y Enterprise: Request Monitor forma parte del stack IIS estándar; requiere la activación explícita en Activar o Desactivar Características de Windows.
- Windows Home: IIS no está soportado oficialmente, por tanto tampoco Request Monitor.
Cómo interpreta IIS el código 0x80004001
Cuando appcmd
invoca a la API nativa HttpApiQueryStatistics
, ésta delega la inspección de W3WP a Request Monitor. Si no encuentra la DLL correspondiente (reqmonitor.dll
) o la clave HKLM\SYSTEM\CurrentControlSet\Services\IISADMIN\Parameters\RequestMonitorEnabled
está ausente, el subsistema devuelve E_NOTIMPL
. En tiempo de ejecución, el manejador gestiona la excepción y expone el HRESULT directamente.
Buenas prácticas para entornos de producción
- Limita el acceso: Request Monitor revela URLs completas y cabeceras; delega su uso a cuentas de Ops con Just‑In‑Time (JIT) y audita la ejecución de
appcmd
. - Automatiza la instalación: incluye
IIS-RequestMonitor
en tu imagen Golden o plantilla Terraform para evitar configuraciones drifts. - Capta sólo lo necesario: el monitor impacta mínimamente el rendimiento, pero capturar FREB y Debug Diag simultáneamente puede añadir latencia perceptible.
- Integra alertas: combina los contadores Requests Rejected y Application Pool Restarts con tu plataforma APM (Prometheus, Grafana) para una visión end‑to‑end.
Preguntas frecuentes (FAQ)
¿Request Monitor afecta al rendimiento?
Consumirá ciclos mínimos (≤1 %) porque únicamente enumera peticiones en memoria cuando es invocado; no registra de forma continua como FREB.
¿Puede coexistir con ARR o Web Farm Framework?
Sí. En configuraciones ARR, Request Monitor se instala en cada nodo independientemente del balanceador.
¿Cómo filtrar la salida por Application Pool?
Usa appcmd list requests /APPLICATIONPOOL.name:"DefaultAppPool"
.
¿Se puede habilitar en Server Core sin GUI?
Instala la Feature on Demand: Dism /Add-Capability /CapabilityName:IIS-RequestMonitor~~~~0.0.1.0
.
Conclusión
El error 0x80004001
al invocar Request Monitor indica una carencia de módulo, no un fallo de IIS en sí. Verificar, instalar y reiniciar el componente restablece de inmediato la visibilidad de las solicitudes activas, permitiendo diagnosticar cuellos de botella y filtrados sin recurrir a trazas de alto volumen.