Hledejte ve službách Windows, prohlížejte si každou změnu předem a zjistěte, co se odchýlilo od včerejška

Better Windows Services je services.msc postavený znovu pro lidi, kteří spravují stroje s Windows - okno a příkazový řádek nad jedním jádrem. Položte stroji otázku místo listování osmi sty řádky. Zjistěte, co změna provede, dřív, než na cokoli kliknete. A to, co services.msc nikdy neměl: zmrazte každou službu do souboru a o týden později se zeptejte, co se změnilo.

  • Volný a bezplatný, GPL-3.0
  • Jediný soubor, nebo instalační program
  • K prohlížení nejsou potřeba práva správce
  • Nikdy nekomunikuje s internetem
Okno s pěti vybranými položkami a plánem jejich spuštění zobrazeným nad seznamem: pět kroků, poznámka, že dvě z nich už v tomto stavu jsou, řádek bws start pro každou položku a tlačítko Start 5 entries.
Vybrané položky, plán zobrazený dřív, než se cokoli stane, a řádek bws, který žádá přesně totéž. Program mluví anglicky - okno čte jazykový soubor uložený vedle sebe, takže překlad je možný bez nového sestavení.
Půl minuty s ním

Jak to vypadá při použití

Skutečná relace na Windows nainstalovaných v polštině - zobrazované názvy pocházejí z Windows, takže jsou v jeho jazyce. Samotné okno mluví anglicky.

Čtyři vybrané položky a plán jejich spuštění, vynucený restart služby Local Session Manager, jehož plán varuje, že stroj bez ní nefunguje, a žádá o její název, než tlačítko zabere, otázky k zahájení pod prázdným vyhledávacím polem a služba Print Spooler nalezená zadáním části názvu a spuštěná.
Čtyři vybrané položky a plán jejich spuštění, vynucený restart, který žádá název služby, kterou stroj potřebuje, otázky pod prázdným vyhledávacím polem a služba Print Spooler nalezená psaním a spuštěná.
Úvodní obrazovka: tři karty s čísly o tomto stroji - běžící služby, služby nastavené na automatické spuštění, které nenaběhly, a služby nastavené na automatické spuštění, jejichž soubor chybí - a tlačítko Show the list.
Otevře se několika čísly o tomto stroji. Každé je otázka - klikněte na ně a otázka se vloží do vyhledávacího pole.
Seznam služeb se třemi seznamy nad vyhledávacím polem, prázdné vyhledávací pole, filtrační tlačítka rozbalená v řádcích pro stav, typ spouštění, podpis, nesrovnalosti a triggery a pod nimi seznam.
Filtrační tlačítka píší do vyhledávacího pole, takže to, na co jste klikli, je dotaz, který můžete číst a upravovat.
Proč to existuje

services.msc se od Windows 2000 téměř nezměnil

Správci v něm tráví hodiny týdně a narážejí na stejné zdi.

  • Žádné vyhledávání. Jediná navigace je skok na první písmeno zobrazovaného názvu.
  • Žádné filtrování. Nelze se zeptat ukaž mi, co je nastaveno na automatické spuštění a neběží.
  • Jeden řádek najednou. Restart dvanácti služeb je dvanáct kliknutí pravým tlačítkem a dvanáct čekání.
  • "Stopping..." donekonečna, bez cesty ven kromě Správce úloh a hádání procesu.
  • Žádná historie. Nikdo neví, kdo nastavil typ spouštění na Zakázáno, ani kdy.
  • Skrytá data. Proces, triggery, privilegia, popisovač zabezpečení, kdo podepsal spustitelný soubor - na všechno je potřeba sc.exe zpaměti, nebo registr.
  • Žádná parita na příkazovém řádku. sc.exe má syntaxi z devadesátých let a Get-Service, který je součástí Windows, ve Windows PowerShellu 5.1, neukazuje, pod jakým účtem služba běží, natož její popis. PowerShell 7 ukazuje obojí a instaluje se zvlášť.

Ostatní nástroje vždy řeší jen část

Process Hacker a System Informer ukazují bohatý seznam a umějí vynutit ukončení, ale nemají audit ani příkazový řádek. sc.exe a PsService umějí všechno a nic vám neřeknou. Rutiny *-Service v PowerShellu se dají skriptovat a jsou povrchní.

Nikdo nespojuje prohledávatelný seznam, náhled před každou změnou a záznam toho, co se v čase změnilo - a ten záznam je důvod, proč si tento nástroj nechat na stroji i po prvním odpoledni.

Úplné srovnání
Co dělá

Okno a příkazový řádek nad jedním jádrem

Ptejte se místo listování

start:auto !status:running znamená co by mělo běžet a neběží. Jeden jazyk, ve vyhledávacím poli i v bws list --query, s poli nabízenými při psaní.

Ukázat plán, než se cokoli stane

Každé zastavení, spuštění, restart i změna typu spouštění se předem zobrazí se službami, které stáhne s sebou, a náhled je to, co se spustí.

Říct, co se odchýlilo a kdo to změnil

bws snapshot create zmrazí stroj do souboru a bws snapshot diff řekne, co se od té doby změnilo, konfiguraci odděleně od toho, co se jen spustilo nebo zastavilo. bws history řekne ze systémového protokolu, kdo změnil typ spouštění a kdo nainstaloval službu. Okno dělá všechny tři věci v části Audit....

Opravit běžný problém jedním kliknutím

Karta Tools a bws tool fix restartují službu za tiskárnou, která netiskne, za zmizelým zvukem nebo za zaseklým vyhledáváním, spolu s tím, co na ní závisí, stejným plánem jako všechno ostatní.

Zastavit službu, která se nechce zastavit

Nejdřív se zeptá zdvořile a proces ukončí, jen když to selže, a pojmenuje každou další službu, která v něm žije.

Ukázat, co services.msc skrývá

Kdo podepsal spustitelný soubor a jestli mu Windows důvěřuje, triggery, privilegia, popisovač zabezpečení, proces a jeho paměť. Jako sloupce i jako věci, podle kterých se dá hledat.

Říct, když něco nešlo přečíst

Pole, které nešlo přečíst, se ohlásí jako nepřečtené, nikdy se neukáže jako prázdné. Snímek pořízený bez práv správce to říká uvnitř souboru.

Zapadnout do skriptů

--json u každého příkazu, návratový kód pro každý konec a 5, když porovnání najde drift.

Běžet z jednoho souboru, offline

Rozbalit a spustit, nebo nainstalovat pro celý stroj. Žádné .NET k instalaci a nikdy nekomunikuje s internetem. Čtení nepotřebuje práva správce. GPL-3.0.

Část, kterou services.msc nikdy neměl

Co se změnilo od včerejška

Snímek je celý stroj v jednom okamžiku - každá služba a ovladač s typem spouštění, účtem, cestou ke spuštění, hashem a podepisovatelem souboru, závislostmi, triggery, privilegii a popisovačem zabezpečení. Je to JSON s jedním polem na řádek, takže patří do repozitáře a git diff ho čte.

$ 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.
  • Konfigurace a stav běhu se hlásí odděleně. Dva snímky pořízené s odstupem dne se liší tím, co zrovna běží, a téměř nic z toho není drift - řádek, který stojí za čtení, je změněný typ spouštění.
  • Co nešlo porovnat, je uvedeno, ne skryto. Pole, které jeden snímek nikdy nečetl, vyjde jako not compared, takže porovnání, které říká nic se nezměnilo, znamená, že se nic nezměnilo v tom, co viděly obě strany.
  • --exit-code skončí kódem 5, když se konfigurace liší, takže naplánovaná úloha může při nasazení pořídit snímek a první noc, kdy se stroj odchýlí, někoho upozornit.
  • Dva stroje, dva soubory. Pořiďte snímek na testovacím a jeden na produkčním prostředí a porovnejte je kdekoli.
Jak fungují snímky a drift
Nic se neděje bez plánu

Náhled je provedení

Každá operace, která zapisuje, nejdřív sestaví plán a týž plán je náhled, kaskáda závislých služeb, odmítnutí dřív, než na cokoli kliknete, příkazový řádek, který žádá totéž, a cesta zpět po provedení.

$ 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.
  • Spusťte to bez --dry-run a tohle jsou kroky, v tomto pořadí, se stejnými důvody vedle nich. Pro skutečné provedení neexistuje druhá cesta v kódu.
  • To, co spadne s ním, je v plánu. Služby, které by se rozbily, jsou samostatné kroky, a plán, který by shodil něco, co stroj potřebuje, to říká ve varováních.
  • Odmítnutí přijde dřív než tlačítko. Ovladač, služba, jejíž zastavení správce nepřijme, proces, který systém chrání - odmítnuto při sestavování plánu, s důvodem. Okno tlačítko zešedí a vedle něj řekne proč.
  • Vynucené zastavení jsou dva kroky a druhý je podmíněný. bws kill požádá službu o zastavení a její proces ukončí, jen když to nezabere, a pojmenuje každou další službu, která v něm žije.
Když se služba nezastaví
Dvě minuty s ním

Z příkazového řádku

Stejné jádro jako okno, pro skripty, naplánované úlohy a CI. Data jdou na standardní výstup a všechno ostatní na standardní chybový výstup, takže bws list --json | jq funguje a varování nikdy nepřistane ve vašem JSONu.

bws list --query "start:auto !status:running"     co by mělo běžet a neběží
bws list --query "file:missing"                   služby, jejichž spustitelný soubor je pryč
bws list --query "signed:no peruser:no"           nepodepsané, bez kopií pro jednotlivé relace
bws show Spooler                                  všechno, co je o jedné položce známo
bws stop Winmgmt --dry-run --dependents           co by zastavení strhlo s sebou
bws kill Spooler --dry-run                        co by ukončení jeho procesu vzalo s sebou
bws start-type Spooler manual --dry-run           co by udělalo jeho sundání z automatického spouštění
bws snapshot create before.json                   zmrazit stroj před změnou
bws snapshot diff before.json --live --exit-code  co se od té doby změnilo, 5 pokud se změnila konfigurace
bws history Spooler                               kdo změnil jeho typ spouštění a kdy
bws tool fix printer --dry-run                    co by udělala rychlá oprava zaseklé tiskárny
Každý příkaz, přepínač a návratový kód
Získejte ho

Rozbalit a spustit, nebo nainstalovat

Windows 10 1809 nebo Windows Server 2019 a novější, 64bitové. Archivy nepotřebují instalační program a nic nezapisují do registru a k prohlížení nejsou potřeba práva správce. Cokoli měnit vyžaduje relaci se zvýšenými oprávněními a obě poloviny to říkají místo tichého selhání - okno nabízí Restart as admin.

SouborCo to je
BetterWindowsServices-win-x64.zipOkno, jeden samostatný spustitelný soubor - žádné .NET k instalaci
bws-cli-win-x64.zipPříkazový řádek, jeden samostatný spustitelný soubor, pro skripty a CI
BetterWindowsServices-win-x64.msiInstalační program: oba programy pro každý účet na stroji, okno v nabídce Start a bws v PATH

Spustitelné soubory nesou podpis Authenticode, takže Windows uvádí vydavatele místo varování před neznámým.