WUGrid
En desenvolupament · v0.12.0 · només lectura llevat que reiniciïs

Segueix cada servidor durant una ronda de reinicis de Windows Update

WUGrid mostra l'estat de cada servidor cada pocs segons, reinicia els que triïs sense forçar-los i comprova el que un reinici en verd pot amagar. Funciona sense agents per WMI/DCOM, així que va allà on WinRM és tancat i no instal·la res als servidors.

La finestra de WUGrid durant una ronda de demostració: catorze servidors acolorits segons l'estat (tornat, amb avisos, arrencant, caigut, instal·lant, reinici pendent), els recomptes a dalt i els esdeveniments de la ronda a sota.

La ronda de demostració, als 26 minuts. Servidors simulats: no es contacta amb res.

Sense agents

ICMP i WMI per DCOM, amb una sola connexió reutilitzada per servidor. Només fa servir el que té qualsevol Windows Server: ni WinRM, ni agents, ni ConfigMgr.

Observar per defecte

Seguir i verificar no canvien mai cap servidor. Un reinici és una acció amb nom: en veus el pla, el confirmes, cada servidor es torna a comprovar i el resultat queda registrat.

Regles d'una ronda real

Fet a partir d'una ronda de 54 servidors. Els reinicis encadenats, un minut d'“accés denegat” mentre un servidor arrenca i la neteja de components són habituals i es mostren com a tals. Les fallades reals es marquen.

Seguiment

Tots els servidors, d'un cop d'ull

Cada servidor té el seu propi fil, que li fa ping i en llegeix la darrera arrencada, els processos de manteniment i les claus de reinici de CBS i de Windows Update. Una hora de tall decideix què compta com a reiniciat.

RESTART PENDING
encara sense reiniciar; paquets CBS o Windows Update esperant
NO RESTART PENDING
encara sense reiniciar; res pendent
INSTALLING
manteniment abans de l'aturada
DOWN
sense ping, amb el temps que fa que és caigut
BOOTING
respon al ping, WMI encara no està a punt
BACK
reiniciat després del tall, comprovacions correctes
BACK · PENDING
reiniciat, però torna a haver-hi un reinici pendent
BACK
reiniciat, però ha fallat una actualització o un servei no s'executa

Hi ha alarmes per a un servidor caigut 15 minuts o encara pendent 20 minuts després d'arrencar, i una línia quan tots els servidors han tornat nets amb les comprovacions fetes. Els noms dels estats surten en anglès, igual que a la finestra.

La graella als 12 minuts de la ronda de demostració: servidors instal·lant, caiguts, arrencant, tornats, amb un reinici pendent o sense.
Als 12 minuts: mitja ronda encara instal·lant, caiguda o arrencant.
Verificació

Detecta els reinicis que només semblen verds

Quan es van acumular diversos mesos d'actualitzacions acumulatives preparades l'una sobre l'altra, només es va aplicar la més antiga. Els servidors van tornar aparentment nets, però amb un nivell de pedaços antic. Quan un servidor torna, WUGrid en llegeix el registre System i els serveis (només lectura) i marca:

  • una actualització que ha fallat (esdeveniment 20 de Windows Update), amb l'error explicat;
  • un servei que no s'executa i que s'executava abans del reinici, qui n'ha canviat el tipus d'inici i per què no ha arrencat — temps d'espera esgotat, un servei del qual depèn, el seu compte — i si ja havia fallat en les arrencades anteriors; una aturada que ja coneixes (un rol que s'està traient) es pot marcar com a prevista: es mostra amb el motiu, sense avís;
  • qui l'ha reiniciat i per què (esdeveniment 1074), cada arrencada i la compilació amb què ha arrencat.

Fes doble clic en una fila per veure'n els detalls. La columna Compilació mostra la d'abans i la d'ara.

Detalls de SQL01: tornat però amb avisos, l'actualització acumulativa 2026-09 ha fallat amb 0x800F0840 CBS_E_SESSION_CORRUPT, l'error explicat amb què cal fer, el reinici fet per un administrador, una arrencada, tots els serveis en marxa.
Reinici

Reinicis que mai no forcen

  • Només es poden marcar els servidors sense feina d'actualització en curs, i cada un es torna a comprovar just abans d'enviar el reinici.
  • Mai forçat (Win32ShutdownTracker, reinici sense forçar): els programes en marxa el poden endarrerir o cancel·lar.
  • S'omet el servidor que tingui un usuari amb la sessió iniciada, i es diu qui: Windows rebutja un reinici sense forçar mentre hi hagi algú amb la sessió iniciada.
  • Un avís opcional, durant el qual shutdown /a al servidor l'anul·la.
  • Només comprova ho fa tot llevat de la crida de reinici.
  • Cada petició i cada resultat van a un registre d'auditoria on només s'afegeix, i el teu comentari surt a l'esdeveniment 1074 del servidor.
La finestra Reinicia servidors: cada servidor amb si es pot reiniciar ara i per què no (neteja de components, caigut, arrencant, instal·lant actualitzacions), dos servidors amb un reinici pendent marcats, les opcions d'avís i de comentari i els botons Només comprova i Reinicia.
Informe

La ronda, en una pàgina

Informe… desa la ronda com una pàgina HTML autònoma, amb un resum i un apartat “cal revisar” per enviar per correu o adjuntar a un canvi. També pot desar CSV per a Excel. wugrid-cli verify fa el mateix informe des de la línia d'ordres. L'informe és en anglès.

Obre l'informe de la ronda de demostració →

L'informe HTML de la ronda: catorze servidors amb l'estat, la darrera arrencada, les arrencades, qui els ha reiniciat, la compilació d'abans i d'ara i les actualitzacions instal·lades, i un apartat cal revisar amb l'actualització fallida de SQL01.
Explicació

Cada codi d'error, explicat

El catàleg té 438 codis de CBS, Windows Update, WMI i Win32, amb descripcions i solucions de Microsoft Learn (en anglès) i les notes pròpies de WUGrid per als codis que troba a les rondes reals. Cerca per codi o per paraula. Passa el ratolí per sobre d'una nota de la graella per veure'n un resum.

Les decisions es basen en identificadors d'esdeveniment i codis d'error, mai en el text dels missatges, així que funcionen sigui quin sigui l'idioma dels servidors.

La finestra Codis d'error cercant la paraula corrupt: codis de CBS, Windows Update, Win32 i WMI, amb 0x800F0840 seleccionat i explicat.
Consola

La mateixa ronda en una consola

wugrid-cli watch fa servir la mateixa sonda, els mateixos estats, alarmes i comprovacions que la finestra. La graella es redibuixa cada segon; quan no hi caben tots els servidors, els nets es plegen en una sola línia. Torna a llegir el fitxer de la llista de servidors quan canvia.

Executa'l sense interfície (--headless) i escriu una línia per canvi i per alarma, i s'atura quan tots els servidors han tornat nets. Un script o una tasca en segon pla pot seguir aquesta sortida. La consola és en anglès.

wugrid-cli watch en una finestra de consola: els mateixos catorze servidors en files de colors amb els recomptes, la nota sobre els errors temporals i els darrers esdeveniments.

Ordres

> 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 codi

--state reescriu la ronda en JSON a cada actualització i --events afegeix una línia JSON per esdeveniment. El codi de sortida diu si tots els servidors han acabat tornant nets.

Sortida sense interfície

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))

Tret de la ronda de demostració. L'asterisc marca els errors que solen ser temporals mentre un servidor es reinicia.

Comença

WUGrid és en desenvolupament: descarrega la darrera versió o compila'l des del codi font en un minut.

Descarrega

Un zip amb WUGrid.exe i wugrid-cli.exe: descomprimeix-lo on vulguis i executa'l, no cal instal·lar res. Els binaris encara no estan signats, així que primer desbloqueja el zip (Propietats → Desbloqueja).

Darrera versió

O compila'l amb el .NET SDK 8 o posterior:

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

Prova la demo

Una ronda simulada de 75 minuts amb 14 servidors inventats, amb tots els casos de les notes de camp. No es contacta amb cap servidor.

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

Les finestres són en català, castellà o anglès: tria'n un a la barra d'estat o fes servir --lang. La consola, els informes i els registres són en anglès.

Requisits

  • Windows amb .NET Framework 4.8 a l'estació de treball d'administració
  • ICMP i DCOM/RPC cap als servidors (SMB per a la comprovació d'admin$)
  • Un compte que en sigui administrador
  • No s'instal·la res als servidors; no cal WinRM

Cap on va

De seguir una ronda a conduir-la: cercar, instal·lar, reiniciar per onades, verificar.

  1. M0fetFonaments: solució, proves, CI, notes de camp anonimitzades
  2. M1construïtSeguiment: graella en directe, graella de consola, esdeveniments sense interfície, estat en JSON
  3. M2fetVerificació: resultats de les actualitzacions, línia de base dels serveis i per què un servei no ha arrencat, qui ha reiniciat, informe
  4. M3primera versióReinici: salvaguardes (feina d'actualització, usuaris amb la sessió iniciada), nova comprovació, mai forçat, auditoria, aturades previstes; a continuació, onades i una llista de protegits
  5. M4següentActualitzacions: cercar → aprovar → instal·lar → reiniciar → verificar, sense agents
  6. M5primera versióPublicació: zip a GitHub Releases des de la 0.9.0; a continuació, documentació i signatura del codi

Qui l'ha fet

WUGrid l'escriu Alex Lillo, administrador de sistemes Windows, amb Claude. Va començar com una graella de seguiment en PowerShell feta durant una ronda real de pedaços de 54 servidors i ha crescut fins a ser aquesta eina. Preguntes, idees i informes de camp són benvinguts a GitHub.