WUGrid
En desarrollo · v0.12.0 · solo lectura salvo que reinicies

Sigue cada servidor durante una ronda de reinicios de Windows Update

WUGrid muestra el estado de cada servidor cada pocos segundos, reinicia los que elijas sin forzarlos y comprueba lo que un reinicio en verde puede esconder. Funciona sin agentes por WMI/DCOM, así que va donde WinRM está cerrado y no instala nada en los servidores.

La ventana de WUGrid durante una ronda de demostración: catorce servidores coloreados según su estado (de vuelta, con avisos, arrancando, caído, instalando, reinicio pendiente), los recuentos arriba y los eventos de la ronda debajo.

La ronda de demostración, a los 26 minutos. Servidores simulados: no se contacta con nada.

Sin agentes

ICMP y WMI por DCOM, con una sola conexión reutilizada por servidor. Solo usa lo que tiene cualquier Windows Server: ni WinRM, ni agentes, ni ConfigMgr.

Observar por defecto

Seguir y verificar nunca cambian ningún servidor. Un reinicio es una acción con nombre: ves el plan, lo confirmas, cada servidor se vuelve a comprobar y el resultado queda registrado.

Reglas de una ronda real

Hecho a partir de una ronda de 54 servidores. Los reinicios encadenados, un minuto de “acceso denegado” mientras un servidor arranca y la limpieza de componentes son habituales y se muestran como tales. Los fallos reales se marcan.

Seguimiento

Todos los servidores, de un vistazo

Cada servidor tiene su propio hilo, que le hace ping y lee su último arranque, los procesos de mantenimiento y las claves de reinicio de CBS y de Windows Update. Una hora de corte decide qué cuenta como reiniciado.

RESTART PENDING
aún sin reiniciar; paquetes CBS o Windows Update esperando
NO RESTART PENDING
aún sin reiniciar; nada pendiente
INSTALLING
mantenimiento antes del apagado
DOWN
sin ping, con el tiempo que lleva caído
BOOTING
responde al ping, WMI aún no está listo
BACK
reiniciado después del corte, comprobaciones correctas
BACK · PENDING
reiniciado, pero vuelve a haber un reinicio pendiente
BACK
reiniciado, pero ha fallado una actualización o un servicio no se ejecuta

Hay alarmas para un servidor caído 15 minutos o aún pendiente 20 minutos después de arrancar, y una línea cuando todos los servidores han vuelto limpios con las comprobaciones hechas. Los nombres de los estados salen en inglés, igual que en la ventana.

La cuadrícula a los 12 minutos de la ronda de demostración: servidores instalando, caídos, arrancando, de vuelta, con un reinicio pendiente o sin él.
A los 12 minutos: media ronda aún instalando, caída o arrancando.
Verificación

Detecta los reinicios que solo parecen verdes

Cuando se acumularon varios meses de actualizaciones acumulativas preparadas una encima de otra, solo se aplicó la más antigua. Los servidores volvieron aparentemente limpios, pero con un nivel de parches antiguo. Cuando un servidor vuelve, WUGrid lee su registro System y sus servicios (solo lectura) y marca:

  • una actualización que ha fallado (evento 20 de Windows Update), con el error explicado;
  • un servicio que no se ejecuta y que se ejecutaba antes del reinicio, quién cambió su tipo de inicio y por qué no arrancó — tiempo de espera agotado, un servicio del que depende, su cuenta — y si ya había fallado en los arranques anteriores; una parada que ya conoces (un rol que se está quitando) se puede marcar como prevista: se muestra con el motivo, sin aviso;
  • quién lo reinició y por qué (evento 1074), cada arranque y la compilación con la que arrancó.

Doble clic en una fila para ver los detalles. La columna Compilación muestra la de antes y la de ahora.

Detalles de SQL01: de vuelta pero con avisos, la actualización acumulativa 2026-09 ha fallado con 0x800F0840 CBS_E_SESSION_CORRUPT, el error explicado con qué hacer, el reinicio hecho por un administrador, un arranque, todos los servicios en marcha.
Reinicio

Reinicios que nunca fuerzan

  • Solo se pueden marcar los servidores sin trabajo de actualización en curso, y cada uno se vuelve a comprobar justo antes de enviar el reinicio.
  • Nunca forzado (Win32ShutdownTracker, reinicio sin forzar): los programas en marcha pueden retrasarlo o cancelarlo.
  • Se omite el servidor que tenga un usuario con la sesión iniciada, y se dice quién: Windows rechaza un reinicio sin forzar mientras haya alguien con la sesión iniciada.
  • Un aviso opcional, durante el cual shutdown /a en el servidor lo anula.
  • Solo comprobar lo hace todo salvo la llamada de reinicio.
  • Cada petición y cada resultado van a un registro de auditoría en el que solo se añade, y tu comentario aparece en el evento 1074 del servidor.
La ventana Reiniciar servidores: cada servidor con si se puede reiniciar ahora y por qué no (limpieza de componentes, caído, arrancando, instalando actualizaciones), dos servidores con un reinicio pendiente marcados, las opciones de aviso y de comentario y los botones Solo comprobar y Reiniciar.
Informe

La ronda, en una página

Informe… guarda la ronda como una página HTML autónoma, con un resumen y un apartado “requiere atención” para enviar por correo o adjuntar a un cambio. También puede guardar CSV para Excel. wugrid-cli verify hace el mismo informe desde la línea de comandos. El informe está en inglés.

Abrir el informe de la ronda de demostración →

El informe HTML de la ronda: catorce servidores con el estado, el último arranque, los arranques, quién los reinició, la compilación de antes y de ahora y las actualizaciones instaladas, y un apartado requiere atención con la actualización fallida de SQL01.
Explicación

Cada código de error, explicado

El catálogo tiene 438 códigos de CBS, Windows Update, WMI y Win32, con descripciones y soluciones de Microsoft Learn (en inglés) y las notas propias de WUGrid para los códigos que encuentra en las rondas reales. Busca por código o por palabra. Pasa el ratón por encima de una nota de la cuadrícula para ver un resumen.

Las decisiones se basan en identificadores de evento y códigos de error, nunca en el texto de los mensajes, así que funcionan sea cual sea el idioma de los servidores.

La ventana Códigos de error buscando la palabra corrupt: códigos de CBS, Windows Update, Win32 y WMI, con 0x800F0840 seleccionado y explicado.
Consola

La misma ronda en una consola

wugrid-cli watch usa la misma sonda, los mismos estados, alarmas y comprobaciones que la ventana. Su cuadrícula se redibuja cada segundo; cuando no caben todos los servidores, los limpios se pliegan en una sola línea. Vuelve a leer el archivo de la lista de servidores cuando cambia.

Ejecútalo sin interfaz (--headless) y escribe una línea por cambio y por alarma, y se detiene cuando todos los servidores han vuelto limpios. Un script o una tarea en segundo plano puede seguir esa salida. La consola está en inglés.

wugrid-cli watch en una ventana de consola: los mismos catorce servidores en filas de colores con los recuentos, la nota sobre los errores temporales y los últimos eventos.

Comandos

> wugrid-cli watch --list servers.txt --since 2026-10-17T15:00
> wugrid-cli watch --list servers.txt --headless \
      --state state.json --events events.jsonl
> wugrid-cli verify SRV01 SRV02 --html round.html
> wugrid-cli check SRV01         # DNS, ping, WMI, admin$
> wugrid-cli error 0x800F0840   # explica un código

--state reescribe la ronda en JSON en cada actualización y --events añade una línea JSON por evento. El código de salida dice si todos los servidores acabaron de vuelta limpios.

Salida sin interfaz

15:22:12 RDS01: ALARM DOWN for 15m12s
15:29:07 SQL01: INSTALLING -> DOWN
15:31:09 SQL01: DOWN -> BOOTING (Access is denied. *)
15:31:40 SQL01: BOOTING (Access is denied. *) -> BACK
         (servicing finishing)
15:32:26 SQL02: ALARM back 20m14s, reboot pending again
         (CBS 3 pkgs)
15:32:57 SQL01: BACK (servicing finishing) -> BACK (update
         failed: KB5900001 (0x800F0840 CBS_E_SESSION_CORRUPT))

Sacado de la ronda de demostración. El asterisco marca los errores que suelen ser temporales mientras un servidor se reinicia.

Empezar

WUGrid está en desarrollo: descarga la última versión o compílalo desde el código fuente en un minuto.

Descargar

Un zip con WUGrid.exe y wugrid-cli.exe: descomprímelo donde quieras y ejecútalo, no hay que instalar nada. Los binarios aún no están firmados, así que primero desbloquea el zip (Propiedades → Desbloquear).

Última versión

O compílalo con el .NET SDK 8 o posterior:

> git clone https://github.com/Lill82/WUGrid
> dotnet build WUGrid.sln -c Release

Probar la demo

Una ronda simulada de 75 minutos con 14 servidores inventados, con todos los casos de las notas de campo. No se contacta con ningún servidor.

> WUGrid.exe --demo --lang es
> wugrid-cli watch --demo

Las ventanas están en catalán, castellano o inglés: elige uno en la barra de estado o usa --lang. La consola, los informes y los registros están en inglés.

Requisitos

  • Windows con .NET Framework 4.8 en la estación de trabajo de administración
  • ICMP y DCOM/RPC hacia los servidores (SMB para la comprobación de admin$)
  • Una cuenta que sea administradora en ellos
  • No se instala nada en los servidores; no hace falta WinRM

Hacia dónde va

De seguir una ronda a conducirla: buscar, instalar, reiniciar por oleadas, verificar.

  1. M0hechoCimientos: solución, pruebas, CI, notas de campo anonimizadas
  2. M1construidoSeguimiento: cuadrícula en directo, cuadrícula de consola, eventos sin interfaz, estado en JSON
  3. M2hechoVerificación: resultados de las actualizaciones, línea base de los servicios y por qué un servicio no arrancó, quién reinició, informe
  4. M3primera versiónReinicio: salvaguardas (trabajo de actualización, usuarios con la sesión iniciada), nueva comprobación, nunca forzado, auditoría, paradas previstas; a continuación, oleadas y una lista de protegidos
  5. M4siguienteActualizaciones: buscar → aprobar → instalar → reiniciar → verificar, sin agentes
  6. M5primera versiónPublicación: zip en GitHub Releases desde la 0.9.0; a continuación, documentación y firma del código

Quién lo ha hecho

WUGrid lo escribe Alex Lillo, administrador de sistemas Windows, con Claude. Empezó como una cuadrícula de seguimiento en PowerShell hecha durante una ronda real de parches de 54 servidores y ha crecido hasta ser esta herramienta. Preguntas, ideas e informes de campo son bienvenidos en GitHub.