Cerchi i suoi servizi Windows, veda ogni modifica prima che venga eseguita e scopra cosa è andato alla deriva da ieri

Better Windows Services è services.msc ricostruito per chi amministra macchine Windows - una finestra e una riga di comando su un unico motore. Faccia una domanda alla macchina invece di scorrere ottocento righe. Veda cosa farà una modifica prima di premere qualsiasi cosa. E ciò che services.msc non ha mai avuto: congelare ogni servizio in un file e, una settimana dopo, chiedere cosa è cambiato.

  • Libero e gratuito, GPL-3.0
  • Un solo file, oppure un programma di installazione
  • Nessun diritto di amministratore per consultare
  • Non si collega mai a Internet
La finestra con cinque voci selezionate e il piano per avviarle mostrato sopra l'elenco: cinque passaggi, una nota che due di esse sono già in quello stato, una riga bws start per ogni voce e il pulsante Start 5 entries.
Voci selezionate, un piano mostrato prima che accada qualsiasi cosa e la riga bws che chiede esattamente la stessa cosa. Il programma parla inglese - la finestra legge un file di lingua posto accanto a essa, quindi una traduzione è possibile senza ricompilare.
Mezzo minuto con lo strumento

Come appare in uso

Una sessione reale, su un Windows installato in polacco - i nomi visualizzati vengono da Windows, quindi sono nella sua lingua. La finestra stessa parla inglese.

Quattro voci selezionate e il piano per avviarle, un riavvio forzato del Local Session Manager il cui piano avverte che la macchina non funziona senza di esso e chiede il suo nome prima che il pulsante agisca, le domande di partenza sotto la casella di ricerca vuota e il Print Spooler trovato digitando parte del suo nome e avviato.
Quattro voci selezionate e il piano per avviarle, un riavvio forzato che chiede il nome di un servizio di cui la macchina ha bisogno, le domande sotto una casella di ricerca vuota e il Print Spooler trovato digitando e avviato.
La schermata iniziale: tre schede di numeri su questa macchina - servizi in esecuzione, servizi ad avvio automatico che non sono partiti e servizi ad avvio automatico il cui file è sparito - e un pulsante Show the list.
Si apre con alcuni numeri su questa macchina. Ognuno è una domanda - lo clicchi e la domanda va nella casella di ricerca.
L'elenco dei servizi con le tre liste sopra la casella di ricerca, una casella di ricerca vuota, i pulsanti di filtro aperti in righe per stato, tipo di avvio, firma, disaccordi e trigger, e l'elenco sotto.
I pulsanti di filtro scrivono nella casella di ricerca, così ciò su cui ha cliccato è una query che può leggere e modificare.
Perché esiste

services.msc è cambiato appena dai tempi di Windows 2000

Gli amministratori vi passano ore ogni settimana scontrandosi con gli stessi muri.

  • Nessuna ricerca. L'unica navigazione è saltare alla prima lettera di un nome visualizzato.
  • Nessun filtro. Non c'è modo di chiedere mostrami ciò che è impostato per avviarsi automaticamente e non è in esecuzione.
  • Una riga alla volta. Riavviare dodici servizi significa dodici clic destri e dodici attese.
  • "Arresto in corso..." per sempre, senza altra via d'uscita che Gestione attività e indovinare il processo.
  • Nessuna cronologia. Nessuno sa chi ha impostato quel tipo di avvio su Disabilitato, né quando.
  • Dati nascosti. Il processo, i trigger, i privilegi, il descrittore di sicurezza, chi ha firmato l'eseguibile - tutto richiede sc.exe a memoria, oppure il Registro.
  • Nessuna parità nella riga di comando. sc.exe ha una sintassi degli anni Novanta, e il Get-Service fornito con Windows, in Windows PowerShell 5.1, non mostra l'account con cui gira un servizio, tanto meno la sua descrizione. PowerShell 7 mostra entrambi e si installa a parte.

Gli altri strumenti ne risolvono ciascuno una parte

Process Hacker e System Informer mostrano un elenco ricco e possono terminare un processo con la forza, ma non hanno né audit né riga di comando. sc.exe e PsService possono fare tutto e non dicono nulla. I cmdlet *-Service di PowerShell sono automatizzabili e superficiali.

Nessuno combina un elenco in cui cercare, un'anteprima prima di ogni modifica e una traccia di ciò che è cambiato nel tempo - e la traccia è il motivo per tenere questo strumento su una macchina dopo il primo pomeriggio.

Il confronto completo
Cosa fa

Una finestra e una riga di comando su un unico motore

Chiedere, invece di scorrere

start:auto !status:running significa ciò che dovrebbe essere attivo e non lo è. Un solo linguaggio, nella casella di ricerca e in bws list --query, con i campi suggeriti mentre digita.

Mostrare il piano prima che accada qualcosa

Ogni arresto, avvio, riavvio e modifica del tipo di avvio viene anticipato con i servizi che trascina con sé, e l'anteprima è ciò che viene eseguito.

Dirle cosa è andato alla deriva e chi l'ha cambiato

bws snapshot create congela la macchina in un file e bws snapshot diff dice cosa è cambiato da allora, la configurazione a parte rispetto a ciò che si è semplicemente avviato o fermato. bws history dice, dal registro di sistema, chi ha cambiato un tipo di avvio e chi ha installato un servizio. La finestra fa tutte e tre le cose in Audit....

Risolvere un problema comune con un clic

La scheda Tools e bws tool fix riavviano il servizio dietro una stampante che non stampa, un audio sparito o una ricerca bloccata, insieme a ciò che ne dipende, con lo stesso piano di tutto il resto.

Fermare un servizio che non si ferma

Chiede prima con garbo e termina il processo solo se questo fallisce, nominando ogni altro servizio che vive al suo interno.

Mostrare ciò che services.msc nasconde

Chi ha firmato l'eseguibile e se Windows si fida, trigger, privilegi, il descrittore di sicurezza, il processo e la sua memoria. Come colonne e come criteri di ricerca.

Dire quando non ha potuto leggere qualcosa

Un campo che non ha potuto leggere viene segnalato come non letto, mai mostrato come vuoto. Uno snapshot preso senza diritti di amministratore lo dice dentro il file stesso.

Adattarsi agli script

--json su ogni comando, un codice di uscita per ogni conclusione e 5 quando un confronto trova deriva.

Girare da un solo file, offline

Decomprima e avvii, oppure lo installi per tutta la macchina. Nessun .NET da installare, e non si collega mai a Internet. Consultare non richiede diritti di amministratore. GPL-3.0.

Ciò che services.msc non ha mai fatto

Cosa è cambiato da ieri

Uno snapshot è l'intera macchina in un istante - ogni servizio e ogni driver, con il suo tipo di avvio, account, percorso di avvio, l'hash e il firmatario del suo file, le dipendenze, i trigger, i privilegi e il descrittore di sicurezza. È JSON con un campo per riga, quindi entra in un repository e git diff lo legge.

$ bws snapshot diff before.json --live --exit-code
Changed (2):
  Spooler  Print Spooler
    startType: Manual -> Automatic
    status: Stopped -> Running  (running state, not configuration)
  wlidsvc  Microsoft Account Sign-in Assistant
    status: Stopped -> Running  (running state, not configuration)

Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
  • Configurazione e stato di esecuzione sono segnalati separatamente. Due snapshot presi a un giorno di distanza differiscono per ciò che capita di essere in esecuzione, e quasi nulla di questo è deriva - il tipo di avvio che è cambiato è la riga da leggere.
  • Ciò che non si è potuto confrontare è elencato, non nascosto. Un campo che uno snapshot non ha mai letto esce come not compared, così un confronto che dice nulla è cambiato significa che nulla è cambiato in ciò che entrambi i lati potevano vedere.
  • --exit-code termina con 5 quando la configurazione differisce, così un'attività pianificata può prendere uno snapshot alla distribuzione e avvisare qualcuno la prima notte in cui la macchina va alla deriva.
  • Due macchine, due file. Prenda uno snapshot in staging e uno in produzione e li confronti ovunque.
Come funzionano gli snapshot e la deriva
Niente accade senza un piano

L'anteprima è l'esecuzione

Ogni operazione che scrive costruisce prima un piano, e quello stesso piano è l'anteprima, la cascata dei servizi dipendenti, il rifiuto prima che prema qualsiasi cosa, la riga di comando che chiede la stessa cosa e la via del ritorno dopo.

$ bws stop Winmgmt --dry-run --dependents
Plan: stop Winmgmt  (2 steps)
  1. stop  vmms      (would break otherwise)
  2. stop  Winmgmt   (asked for)

Warnings:
  - Stopping Winmgmt also stops one other entry: vmms
  - Winmgmt starts automatically, so it will be back after the next restart.
  • Lo esegua senza --dry-run e questi sono i passaggi, in quell'ordine, con le stesse ragioni accanto. Non esiste un secondo percorso di codice per l'esecuzione vera.
  • Ciò che cade con esso è nel piano. I servizi che smetterebbero di funzionare sono passaggi a sé, e un piano che farebbe cadere qualcosa di cui la macchina ha bisogno lo dice nei suoi avvisi.
  • Un rifiuto viene prima del pulsante. Un driver, un servizio per il quale il gestore non accetta un arresto, un processo che il sistema protegge - rifiutati quando il piano viene costruito, con la ragione. La finestra disattiva il pulsante e dice il perché accanto.
  • L'arresto forzato è in due passaggi, e il secondo è condizionale. bws kill chiede al servizio di fermarsi e termina il suo processo solo se questo non funziona, nominando ogni altro servizio che vive al suo interno.
Quando un servizio non si ferma
Due minuti con lo strumento

Dalla riga di comando

Lo stesso motore della finestra, per script, attività pianificate e CI. I dati vanno sullo standard output e tutto il resto sullo standard error, così bws list --json | jq funziona e un avviso non finisce mai nel suo JSON.

bws list --query "start:auto !status:running"     ciò che dovrebbe essere attivo e non lo è
bws list --query "file:missing"                   servizi il cui eseguibile è sparito
bws list --query "signed:no peruser:no"           non firmati, senza le copie per sessione
bws show Spooler                                  tutto ciò che si sa di una voce
bws stop Winmgmt --dry-run --dependents           cosa trascinerebbe con sé fermarlo
bws kill Spooler --dry-run                        cosa porterebbe via terminare il suo processo
bws start-type Spooler manual --dry-run           cosa farebbe toglierlo dall'avvio automatico
bws snapshot create before.json                   congelare la macchina prima di una modifica
bws snapshot diff before.json --live --exit-code  cosa è cambiato da allora, 5 se la configurazione è cambiata
bws history Spooler                               chi ha cambiato il suo tipo di avvio, e quando
bws tool fix printer --dry-run                    cosa farebbe la correzione rapida per una stampante bloccata
Ogni comando, opzione e codice di uscita
Come ottenerlo

Decomprimere e avviare, oppure installare

Windows 10 1809 o Windows Server 2019 e successivi, a 64 bit. Gli archivi non richiedono un programma di installazione e non scrivono nulla nel Registro, e consultare non richiede diritti di amministratore. Cambiare qualsiasi cosa richiede una sessione con privilegi elevati, e entrambe le metà lo dicono invece di fallire in silenzio - la finestra offre Restart as admin.

FileChe cos'è
BetterWindowsServices-win-x64.zipLa finestra, un eseguibile autonomo - nessun .NET da installare
bws-cli-win-x64.zipLa riga di comando, un eseguibile autonomo, per script e CI
BetterWindowsServices-win-x64.msiIl programma di installazione: entrambi i programmi per ogni account della macchina, la finestra nel menu Start e bws nel PATH

Gli eseguibili portano una firma Authenticode, così Windows nomina l'editore invece di avvertire di uno sconosciuto.