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
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.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.
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.exea memoria, oppure il Registro. - Nessuna parità nella riga di comando.
sc.exeha una sintassi degli anni Novanta, e ilGet-Servicefornito 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 completoUna 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.
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-codetermina con5quando 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.
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-rune 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 killchiede al servizio di fermarsi e termina il suo processo solo se questo non funziona, nominando ogni altro servizio che vive al suo interno.
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
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.
| File | Che cos'è |
|---|---|
BetterWindowsServices-win-x64.zip | La finestra, un eseguibile autonomo - nessun .NET da installare |
bws-cli-win-x64.zip | La riga di comando, un eseguibile autonomo, per script e CI |
BetterWindowsServices-win-x64.msi | Il 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.

