/
/

Cómo monitorizar y reiniciar automáticamente los servicios de Windows bloqueados

por Team Ninja
How to Monitor and Restart Stuck Windows Services Automatically blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

Puntos clave

  • Identifica los servicios que debes supervisar: crea un array de PowerShell con los servicios críticos de Windows (por ejemplo, Cola de impresión, Cliente DNS, Hora de Windows) para centrar la supervisión en los que realmente afectan al tiempo de actividad.
  • Detecta servicios detenidos o bloqueados con PowerShell: usa Get-Service y consultas WMI a Win32_Service para localizar servicios parados o colgados en estado «Start Pending» o «Stop Pending».
  • Programa la supervisión con el Programador de tareas: automatiza comprobaciones periódicas con schtasks para que los scripts se ejecuten cada pocos minutos sin intervención manual.
  • Registra el estado de recuperación en el registro: escribe la fecha y el resultado de cada reinicio en el Registro de Windows para crear un historial de auditoría ligero, útil para el cumplimiento y los informes del RMM.
  • Configura las acciones de recuperación integradas: usa sc failure o el Editor del Registro para reiniciar servicios automáticamente tras un fallo, ideal para caídas inesperadas más que para servicios bloqueados.

Los servicios de Windows son programas que ejecutan procesos en segundo plano al iniciar el sistema. Garantizan que todo funcione sin interrupciones, pero el equipo puede ralentizarse o fallar si uno o varios servicios se quedan bloqueados en estado «Iniciando» o «Deteniendo», o si se detienen de forma inesperada. Aquí es donde la automatización resulta muy útil, para que los usuarios no tengan que esperar al soporte de TI.

Sigue leyendo y descubre varios métodos para monitorizar los servicios de Windows automáticamente y reiniciarlos cuando se bloquean: desde scripts de PowerShell y CMD hasta el Programador de tareas y el registro.

¿Prefieres una guía visual? Mira nuestro vídeo: Cómo monitorizar y reiniciar automáticamente los servicios de Windows bloqueados.

Descubre qué condiciones y programas de los endpoints conviene supervisar, cuándo generar alertas y qué medidas tomar

⬇️ Descarga el manual de Monitorización y Alertas de endpoints de NinjaOne para MSP

Métodos para monitorizar y reiniciar servicios de Windows bloqueados

La monitorización proactiva, la recuperación automática y un registro fiable son fundamentales para mantener en marcha los servicios críticos de Windows. Echa un vistazo a los métodos que te mostramos a continuación para contar siempre con un enfoque estructurado al monitorizar y reiniciar los servicios esenciales.

Requisitos previos:

  • Windows 10/11 (en estaciones de trabajo)
  • Windows Server 2016 o posterior (en servidores)
  • PowerShell 5.1 o posterior
  • Privilegios de administrador local

Consejo: lee Aspectos a tener en cuenta antes de continuar.

Estrategias de despliegue recomendadas:

Haz clic para elegir un métodoIdeal para usuarios individualesIdeal para empresas
Método 1: identifica los servicios que vas a supervisar✓✓
Método 2: detecta servicios detenidos o bloqueados con PowerShell✓✓
Método 3: programa una tarea de supervisión de servicios✓✓
Método 4: registra el estado de recuperación en el registro✓
Método 5: configura las acciones de recuperación integradas (opcional)✓

Método 1: identifica los servicios que vas a supervisar

En este paso definirás una lista de servicios de Windows que resultan críticos para el funcionamiento del sistema y que necesitan supervisión. Si te centras solo en los servicios esenciales, evitarás desperdiciar recursos.

📌 Casos de uso:

  • Crear la lista de servicios críticos de todos los endpoints
  • Supervisar los servicios de las aplicaciones de negocio
  • Definir una línea base para las políticas de automatización de la empresa

Pasos:

  1. Determina qué servicios de Windows son esenciales en tu entorno. Por ejemplo:
    • Cola de impresión, para imprimir
    • Cliente DNS, para la resolución de nombres en la red
    • Hora de Windows, para la sincronización del dominio
  2. Defínelos en un array de PowerShell:
$servicesToMonitor = @(
«Spooler», # Cola de impresión
«W32Time», # Hora de Windows
«Dnscache», # Cliente DNS
«WinRM», # Administración remota de Windows
«BITS» # Servicio de transferencia inteligente en segundo plano)
  1. Opcional: guarda estos nombres en un archivo JSON o CSV para actualizarlos más fácilmente sin tener que editar el script.

Método 2: detecta servicios detenidos o bloqueados con PowerShell

Este método utiliza PowerShell para comprobar el estado de los servicios, reiniciar los que no se estén ejecutando e identificar los que se han quedado en estados de transición.

Casos de uso:

  • Reiniciar automáticamente el Cliente DNS para corregir fallos de resolución de nombres
  • Recuperar la Cola de impresión para restablecer los servicios de impresión
  • Detectar estados «Start Pending»

Requisitos previos:

  • Permisos para ejecutar scripts de PowerShell
  • Acceso a WMI

Pasos:

  1. Ejecuta este script de PowerShell:
foreach ($svc in $servicesToMonitor) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($service.Status -ne «Running») {
try {
Start-Service -Name $svc -ErrorAction Stop
Write-Output «$svc restarted successfully.»
} catch {
Write-Output «Failed to start $svc. Error: $_»
}
}}

Este script enumera los servicios de Windows con PowerShell y obtiene su estado actual. Si detecta que un servicio no se está ejecutando, intenta iniciarlo. Después registra un mensaje de éxito o de error.

  1. Ejecuta este script WMI en PowerShell:
$stuck = Get-CimInstance -Class Win32_Service | Where-Object { $_.State -in @(“Start Pending”, “Stop Pending”) }

Este script consulta todos los servicios de Windows mediante WMI y filtra los que están en estado pendiente, ya sea «Start Pending» o «Stop Pending». Luego guarda esos servicios en la variable $stuck, de modo que puedas revisarlos o actuar sobre ellos más tarde: forzar su detención, reiniciarlos o generar una alerta.

Método 3: programa una tarea de supervisión de servicios

Este método automatiza la ejecución del script a intervalos concretos con el Programador de tareas de Windows, así no tendrás que lanzarlo manualmente. De este modo, los servicios se comprueban de forma continua.

Casos de uso:

  • Ejecutar comprobaciones cada pocos minutos en servidores críticos
  • Automatizar la autorreparación en endpoints sin RMM
  • Garantizar la disponibilidad de los servicios fuera del horario laboral y los fines de semana

Requisitos previos:

  • Acceso al Programador de tareas
  • Contexto de SYSTEM o de una cuenta de servicio

Pasos:

  1. Crea y guarda tu script de supervisión en una ubicación conocida. Por ejemplo, crea «MonitorServices.ps1» y guárdalo en C:\Scripts\.
  2. Con PowerShell, crea una tarea programada que se ejecute cada pocos minutos. En este ejemplo se ejecuta cada 5 minutos:
schtasks /create /tn «MonitorCriticalServices» /tr "powershell.exe -File C:\Scripts\MonitorServices.ps1" /sc minute /mo 5 /ru SYSTEM

⚠️ Importante: asegúrate de que esté permitida la ejecución de scripts.

Método 4: registra el estado de recuperación en el registro

Este método crea un historial de auditoría escribiendo los eventos de reinicio en el Registro de Windows, lo que proporciona un mecanismo de registro ligero para auditorías o para su recopilación desde el RMM.

Casos de uso:

  • Mantener un historial local de las acciones de recuperación
  • Seguir los fallos recurrentes para analizar su causa raíz

Requisito previo: permisos de escritura en el registro

Pasos:

  1. Ejecuta este script de PowerShell:
New-Item -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Name "LastCheck" -Value (Get-Date).ToString(«u»)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Name "LastRestarted" -Value $svc

Esto crea una nueva ruta en el registro con claves que anotan la hora de la última comprobación y el reinicio del servicio.

  1. Valida las nuevas entradas desde CMD:

reg query HKLM\SOFTWARE\Org\ServiceRecovery

Método 5: configura las acciones de recuperación integradas (opcional)

Este último método aprovecha las opciones de recuperación ante fallos que ya incluye Windows para reiniciar servicios tras una caída.

Nota: es la mejor opción para caídas (servicios que terminan de forma inesperada), no para servicios bloqueados (que se quedan colgados o no responden).

Casos de uso:

  • Reiniciar automáticamente servicios como BITS y W32Time después de una caída
  • Estandarizar el comportamiento de recuperación en todos los endpoints mediante GPO
  • Reducir al mínimo el tiempo de inactividad de servicios con fallos intermitentes

Requisitos previos:

  • Acceso de administrador (para sc.exe o el Editor del Registro)
  • El servicio debe admitir recuperación

Pasos:

  1. Configura la recuperación del servicio desde la línea de comandos:

sc failure «Spooler» reset= 86400 actions= restart/60000/restart/60000

Este script de ejemplo configura acciones de recuperación automática para la Cola de impresión. El servicio se reinicia al cabo de 1 minuto en las dos primeras caídas, pero si falla una tercera vez, no se ejecuta ninguna acción de recuperación. Transcurridas 24 horas, el contador de fallos se reinicia.

  1. Otra opción es editar las propiedades del registro, de forma manual o con un script, en:

HKLM:\SYSTEM\CurrentControlSet\Services\<ServiceName>\FailureActions

Aspectos a tener en cuenta

RiesgosPosibles consecuenciasCómo revertirlo
Falsos positivos de los scripts de supervisión
  • Reinicios innecesarios
  • Interrupción del servicio
  • Impacto en los usuarios
  • Pérdida de rendimiento
  • Añade comprobaciones de validación, como confirmar el estado del servicio dos veces antes de reiniciarlo.
  • Prueba primero los scripts en entornos de prueba.
Interrumpir dependencias críticasLas reacciones en cadena al reiniciar pueden romper servicios o aplicaciones interconectados.
  • Elabora un mapa de dependencias.
  • Si algo se interrumpe, reinicia los servicios dependientes en el orden correcto o vuelve al último estado estable conocido.
Exposición de seguridad por scripts con permisos excesivosLos atacantes podrían aprovechar los scripts para obtener control con privilegios elevados.
  • Restringe los permisos de los scripts.
  • Firma el código.
  • Aplica el principio de mínimo privilegio.
  • Revoca de inmediato las credenciales comprometidas si se produce un ataque.

La importancia de supervisar los servicios y automatizar su recuperación

Los servicios de Windows son la columna vertebral de muchas funciones del sistema y de muchas aplicaciones. Cuando fallan, se quedan colgados o se detienen de forma inesperada, los usuarios pueden quedarse sin poder usar su equipo, lo que se traduce en pérdida de tiempo, menor rendimiento y más solicitudes de soporte. Supervisar los servicios correctamente y recuperarlos cuando hay problemas te permite:

  • Aumentar la disponibilidad de endpoints y servidores: al evitar interrupciones, los servidores siguen en línea y los usuarios mantienen su productividad, algo esencial cuando el tiempo de actividad es crítico.
  • Reducir los tickets de soporte y el trabajo reactivo: la recuperación automática resuelve los fallos de servicio más habituales antes de que los usuarios los noten, de modo que no necesitan abrir una incidencia en el servicio de asistencia.
  • Evitar fallos en cascada por servicios dependientes: muchos servicios de Windows necesitan otros servicios para funcionar correctamente. Si consigues reiniciar los servicios que fallan antes de que afecten a los que dependen de ellos, estabilizarás el sistema y evitarás que el problema se extienda a otras aplicaciones o al sistema entero.
  • Respaldar garantías de disponibilidad con SLA: para los MSP, el tiempo de actividad y la fiabilidad del servicio están directamente ligados a los acuerdos de nivel de servicio (SLA). Automatizar la recuperación de los servicios críticos de Windows ayuda a los MSP a cumplir sus obligaciones contractuales, reducir penalizaciones y ganarse la confianza del cliente.

Otros aspectos a valorar al automatizar la supervisión y recuperación de servicios de Windows

A continuación encontrarás algunas consideraciones que recogen buenas prácticas y posibles problemas que conviene resolver antes de desplegar estas estrategias de automatización en entornos de producción.

Dependencias entre servicios

Reiniciar un servicio de Windows sin tener en cuenta sus dependencias puede provocar inestabilidad en el sistema o fallos en cascada. Valida siempre las dependencias antes de reiniciar con scripts como este:

Get-Service -Name X | Select-Object DependentServices

Después, si es necesario, reinicia los servicios dependientes en el orden adecuado.

Notificaciones y alertas

El equipo de TI debe conocer los fallos recurrentes, ya que los reinicios y recuperaciones silenciosos pueden ocultar problemas de fondo. Para ganar visibilidad, lo mejor es configurar los scripts para que envíen alertas por correo electrónico, webhook o a través del RMM cada vez que un servicio se reinicie o no consiga reiniciarse.

Servicios con credenciales

Algunos servicios se ejecutan con cuentas personalizadas y, si la contraseña caduca o se cambia sin actualizar el servicio, los intentos de reinicio fallarán. Vigila la caducidad de las credenciales y mantén procedimientos correctos de rotación de contraseñas. Prueba los reinicios automáticos de estos servicios durante las ventanas de mantenimiento.

Eficiencia y fiabilidad del script

Incluir lógica de tiempo de espera, reintentos y gestión de errores en tus scripts es una buena práctica para evitar bloqueos con servicios que no responden. Así los scripts terminan de forma controlada y registran los fallos.

Solución de problemas habituales

El servicio no se reinicia

Puede que la cuenta del servicio no tenga permisos suficientes, o que el servicio dependa de otro que está detenido o no funciona bien. Comprueba la cuenta del servicio y el estado de su contraseña, y restablécela si ha caducado. También puedes revisar las dependencias con este comando:

Get-Service -Name X | Select-Object DependentServices

El script no se ejecuta

Puede que la tarea programada no se esté ejecutando con una cuenta con privilegios suficientes. Revisa las credenciales y el contexto de la tarea programada (SYSTEM o Administrador). También es posible que la ruta del archivo o la ubicación del script hayan cambiado, así que comprueba que la ruta siga siendo correcta.

El registro no se actualiza

Quizá el script no tenga acceso de escritura a HKLM o se esté ejecutando en un contexto de usuario con acceso solo a HKCU. Asegúrate de ejecutarlo como Administrador o como SYSTEM.

El servicio se queda en estado «Pending»

Un proceso colgado puede bloquear el servicio durante el arranque o la parada. También es posible que haya cuellos de botella de recursos (CPU, RAM o E/S de disco) que impidan completar la operación. Usa Get-CimInstance Win32_Service para detectar los servicios atascados en Start Pending o Stop Pending y, si es seguro hacerlo, finaliza manualmente los procesos asociados.

Servicios de NinjaOne que mejoran la supervisión de los servicios de Windows

Todas las herramientas que hemos visto son buenas formas de supervisar y recuperar servicios de Windows en endpoints concretos. Sin embargo, para los MSP y los equipos de TI siempre resulta ventajoso apoyarse en plataformas que les ayuden a ofrecer un mejor servicio. Así puede ayudarte NinjaOne:

Funcionalidad de NinjaOneDescripciónVentaja para equipos de TI y MSP
Despliegue automatizadoDistribuye scripts de vigilancia de servicios por endpoints, clientes o grupos
  • Ahorra tiempo
  • Garantiza la coherencia entre varios clientes
Remediación automatizadaReinicia los servicios automáticamente cuando están caídos o en estado pendiente
  • Reduce el tiempo de inactividad
  • Evita el impacto en los usuarios antes de que el problema crezca
Alertas y notificacionesGenera alertas cuando se intenta un reinicio, cuando falla o cuando se repite con frecuencia
  • Mejora la visibilidad
  • Permite escalar más rápido si la automatización falla
Etiquetado de endpointsMarca los dispositivos con fallos de servicio recurrentes para revisarlos después
  • Ayuda a identificar problemas que se repiten
  • Facilita el análisis proactivo de la causa raíz
Registro para auditoría y cumplimientoCentraliza en informes los registros basados en el registro de Windows o en scripts
  • Demuestra el cumplimiento de los SLA
  • Simplifica la revisión de incidentes

Prueba la supervisión en tiempo real, las alertas y la automatización de flujos de trabajo en tu propio entorno

→ Descubre más sobre NinjaOne RMM

Cómo escalar la recuperación de servicios en varios entornos

Cuando los servicios de Windows se detienen o se quedan bloqueados, el sistema puede ralentizarse o volverse inestable. Por eso, la supervisión y la recuperación automáticas ayudan a los MSP a reducir el tiempo de inactividad y a mantener la confianza de sus clientes.

Desde comprobar con PowerShell los servicios de Windows en ejecución hasta modificar el registro para auditar, tienes varias formas de crear mecanismos de autorreparación fiables que reduzcan las interrupciones al mínimo. No olvides las consideraciones y los pasos de resolución de problemas que hemos visto para trabajar siempre de forma proactiva.

Temas relacionados:

Guía de inicio rápido

NinjaOne ofrece potentes funciones de automatización que te permiten:

  1. Crear automatizaciones programadas: puedes configurar scripts automáticos que comprueben y reinicien servicios con la biblioteca de automatizaciones de NinjaOne.
  2. Desplegar scripts con flexibilidad: la plataforma permite crear scripts personalizados capaces de:
    • Comprobar el estado de un servicio
    • Reiniciar servicios que no estén en ejecución
    • Ejecutarse como sistema, como el usuario actual o con credenciales concretas
  3. Ejecutar acciones automatizadas: puedes
    • Programar estos scripts para que se ejecuten a intervalos concretos
    • Configurar notificaciones cuando un servicio falle
    • Definir políticas que gestionen automáticamente los problemas de servicio

FAQs

Los fallos repetidos suelen indicar un problema más profundo, como una configuración dañada o la falta de permisos. Cuando ocurre, detén los reinicios automáticos, revisa los permisos de la cuenta del servicio y consulta el Registro de eventos para ver el motivo concreto del fallo.

Automatiza el despliegue con un software RMM para enviar los scripts de supervisión a todos los endpoints gestionados a la vez, en lugar de instalarlos y mantenerlos dispositivo a dispositivo. Además, centraliza las alertas cuando un servicio falla, así los administradores de TI no tienen que consultar los registros locales.

La mayoría de los servicios salen del estado «Iniciando» o «Deteniendo» en cuestión de segundos. Si lleva varios minutos sin cambios, ya está colgado o congelado.

Sí. PowerShell y el Programador de tareas funcionan en local en cualquier dispositivo Windows. Solo las configuraciones de directiva de grupo gestionadas por el dominio requieren estar unido a un dominio.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?