Zoek in uw Windows-services, bekijk elke wijziging voordat die draait en zie wat er is afgedreven sinds gisteren

Better Windows Services is services.msc, opnieuw gebouwd voor wie Windows-machines beheert - een venster en een opdrachtregel op één engine. Stel de machine een vraag in plaats van achthonderd rijen door te scrollen. Zie wat een wijziging gaat doen voordat u ergens op drukt. En wat services.msc nooit had: elke service in een bestand vastleggen en een week later vragen wat er is veranderd.

  • Vrij en gratis, GPL-3.0
  • Eén bestand, of een installatieprogramma
  • Geen beheerdersrechten om te kijken
  • Maakt nooit verbinding met internet
Het venster met vijf geselecteerde items en het plan om ze te starten boven de lijst: vijf stappen, een opmerking dat twee ervan al in die toestand zijn, een bws start-regel voor elk item en de knop Start 5 entries.
Geselecteerde items, een plan dat wordt getoond voordat er iets gebeurt, en de bws-regel die precies hetzelfde vraagt. Het programma spreekt Engels - het venster leest een taalbestand dat ernaast ligt, dus een vertaling is mogelijk zonder opnieuw te bouwen.
Een halve minuut ermee

Hoe het eruitziet in gebruik

Een echte sessie, op een in het Pools geïnstalleerd Windows - de weergavenamen komen van Windows, dus staan ze in de taal ervan. Het venster zelf spreekt Engels.

Vier geselecteerde items en het plan om ze te starten, een geforceerde herstart van de Local Session Manager waarvan het plan waarschuwt dat de machine niet werkt zonder deze en om de naam ervan vraagt voordat de knop werkt, de startvragen onder het lege zoekvak, en de Print Spooler die is gevonden door een deel van de naam te typen en is gestart.
Vier geselecteerde items en het plan om ze te starten, een geforceerde herstart die vraagt om de naam van een service die de machine nodig heeft, de vragen onder een leeg zoekvak en de Print Spooler die al typend is gevonden en gestart.
Het openingsscherm: drie kaarten met cijfers over deze machine - draaiende services, services die automatisch starten maar niet zijn opgekomen, en services die automatisch starten waarvan het bestand weg is - en een knop Show the list.
Het opent met enkele cijfers over deze machine. Elk is een vraag - klik erop en de vraag gaat naar het zoekvak.
De lijst met services met de drie lijsten boven het zoekvak, een leeg zoekvak, de filterknoppen in rijen geopend voor toestand, opstarttype, handtekening, afwijkingen en triggers, en de lijst eronder.
De filterknoppen schrijven in het zoekvak, zodat wat u hebt aangeklikt een query is die u kunt lezen en bewerken.
Waarom dit bestaat

services.msc is sinds Windows 2000 nauwelijks veranderd

Beheerders besteden er elke week uren aan en lopen steeds tegen dezelfde muren op.

  • Geen zoekfunctie. De enige navigatie is springen naar de eerste letter van een weergavenaam.
  • Geen filter. Er is geen manier om te vragen toon me wat automatisch moet starten en niet draait.
  • Eén rij tegelijk. Twaalf services herstarten is twaalf keer rechtsklikken en twaalf keer wachten.
  • "Wordt gestopt..." voor altijd, zonder andere uitweg dan Taakbeheer en het proces raden.
  • Geen geschiedenis. Niemand weet wie dat opstarttype op Uitgeschakeld heeft gezet, of wanneer.
  • Verborgen gegevens. Het proces, de triggers, de bevoegdheden, de beveiligingsdescriptor, wie het uitvoerbare bestand heeft ondertekend - alles vraagt sc.exe uit het hoofd, of het register.
  • Geen gelijkwaardigheid op de opdrachtregel. sc.exe heeft een syntaxis uit de jaren negentig, en de Get-Service die met Windows meekomt, in Windows PowerShell 5.1, toont niet onder welk account een service draait, laat staan de beschrijving. PowerShell 7 toont beide en wordt apart geïnstalleerd.

De andere hulpmiddelen lossen elk een deel op

Process Hacker en System Informer tonen een rijke lijst en kunnen een proces geforceerd beëindigen, maar hebben geen audit en geen opdrachtregel. sc.exe en PsService kunnen alles en vertellen u niets. De *-Service-cmdlets van PowerShell zijn scriptbaar en oppervlakkig.

Niemand combineert een doorzoekbare lijst, een voorvertoning vóór elke wijziging en een logboek van wat er in de loop van de tijd is veranderd - en dat logboek is de reden om dit hulpmiddel na de eerste middag op een machine te houden.

De volledige vergelijking
Wat het doet

Een venster en een opdrachtregel op één engine

Vragen in plaats van scrollen

start:auto !status:running is wat moet draaien en niet draait. Eén taal, in het zoekvak en in bws list --query, met de velden als suggestie terwijl u typt.

Het plan tonen voordat er iets gebeurt

Elke stop, start, herstart en wijziging van het opstarttype wordt vooraf getoond, met de services die erdoor meevallen, en de voorvertoning is wat er draait.

Zeggen wat er is afgedreven en wie het heeft gewijzigd

bws snapshot create legt de machine vast in een bestand en bws snapshot diff zegt wat er sindsdien is veranderd, de configuratie los van wat alleen is gestart of gestopt. bws history zegt aan de hand van het systeemlogboek wie een opstarttype heeft gewijzigd en wie een service heeft geïnstalleerd. Het venster doet alle drie onder Audit....

Een veelvoorkomend probleem met één klik oplossen

Het tabblad Tools en bws tool fix herstarten de service achter een printer die niet print, geluid dat weg is of een vastgelopen zoekopdracht, samen met wat ervan afhangt, via hetzelfde plan als al het andere.

Een service stoppen die niet wil stoppen

Het vraagt eerst beleefd en beëindigt het proces alleen als dat mislukt, waarbij elke andere service die erin leeft wordt genoemd.

Tonen wat services.msc verbergt

Wie het uitvoerbare bestand heeft ondertekend en of Windows het vertrouwt, triggers, bevoegdheden, de beveiligingsdescriptor, het proces en het geheugen ervan. Als kolommen en als zoekcriteria.

Zeggen wanneer iets niet gelezen kon worden

Een veld dat het niet kon lezen wordt gemeld als niet gelezen, nooit getoond als leeg. Een momentopname zonder beheerdersrechten zegt dat in het bestand zelf.

In scripts passen

--json bij elke opdracht, een afsluitcode voor elk einde en 5 wanneer een vergelijking drift vindt.

Draaien vanuit één bestand, offline

Uitpakken en starten, of installeren voor de hele machine. Geen .NET om te installeren, en het maakt nooit verbinding met internet. Voor lezen zijn geen beheerdersrechten nodig. GPL-3.0.

Wat services.msc nooit deed

Wat er sinds gisteren is veranderd

Een momentopname is de hele machine op één moment - elke service en elk stuurprogramma, met opstarttype, account, opstartpad, de hash en de ondertekenaar van het bestand, afhankelijkheden, triggers, bevoegdheden en beveiligingsdescriptor. Het is JSON met één veld per regel, dus het past in een repository en git diff leest het.

$ 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.
  • Configuratie en uitvoeringstoestand worden apart gemeld. Twee momentopnamen met een dag ertussen verschillen in wat er toevallig draait, en bijna niets daarvan is drift - het opstarttype dat is veranderd is de regel om te lezen.
  • Wat niet kon worden vergeleken wordt vermeld, niet verborgen. Een veld dat een momentopname nooit las, komt eruit als not compared, zodat een vergelijking die zegt niets is veranderd betekent dat er niets is veranderd in wat beide kanten konden zien.
  • --exit-code eindigt met 5 wanneer de configuratie verschilt, zodat een geplande taak bij de uitrol een momentopname kan maken en de eerste nacht dat de machine afdrijft iemand kan waarschuwen.
  • Twee machines, twee bestanden. Maak een momentopname op acceptatie en een op productie en vergelijk ze overal.
Hoe momentopnamen en drift werken
Niets gebeurt zonder plan

De voorvertoning is de uitvoering

Elke bewerking die schrijft bouwt eerst een plan, en datzelfde plan is de voorvertoning, de waterval van afhankelijke services, de weigering voordat u ergens op drukt, de opdrachtregel die hetzelfde vraagt en de weg terug achteraf.

$ 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.
  • Voer het uit zonder --dry-run en dit zijn de stappen, in die volgorde, met dezelfde redenen ernaast. Er is geen tweede codepad voor de echte uitvoering.
  • Wat ermee meevalt staat in het plan. De services die zouden uitvallen zijn stappen op zich, en een plan dat iets zou neerhalen wat de machine nodig heeft, zegt dat in de waarschuwingen.
  • Een weigering komt vóór de knop. Een stuurprogramma, een service waarvoor de beheerder geen stop accepteert, een proces dat het systeem beschermt - geweigerd bij het bouwen van het plan, met de reden. Het venster maakt de knop grijs en zegt waarom ernaast.
  • Geforceerd stoppen is twee stappen, en de tweede is voorwaardelijk. bws kill vraagt de service te stoppen en beëindigt het proces alleen als dat niet werkt, waarbij elke andere service die erin leeft wordt genoemd.
Wanneer een service niet wil stoppen
Twee minuten ermee

Vanaf de opdrachtregel

Dezelfde engine als het venster, voor scripts, geplande taken en CI. Gegevens gaan naar de standaarduitvoer en al het andere naar de standaardfout, zodat bws list --json | jq werkt en een waarschuwing nooit in uw JSON belandt.

bws list --query "start:auto !status:running"     wat moet draaien en niet draait
bws list --query "file:missing"                   services waarvan het uitvoerbare bestand weg is
bws list --query "signed:no peruser:no"           niet ondertekend, zonder de kopieën per sessie
bws show Spooler                                  alles wat bekend is over een item
bws stop Winmgmt --dry-run --dependents           wat stoppen ervan zou meenemen
bws kill Spooler --dry-run                        wat het beëindigen van het proces zou meenemen
bws start-type Spooler manual --dry-run           wat het van automatisch halen zou doen
bws snapshot create before.json                   de machine vastleggen voor een wijziging
bws snapshot diff before.json --live --exit-code  wat er sindsdien is veranderd, 5 als de configuratie dat is
bws history Spooler                               wie het opstarttype heeft gewijzigd, en wanneer
bws tool fix printer --dry-run                    wat de snelle oplossing voor een vastgelopen printer zou doen
Elke opdracht, optie en afsluitcode
Het binnenhalen

Uitpakken en starten, of installeren

Windows 10 1809 of Windows Server 2019 en later, 64-bits. De archieven hebben geen installatieprogramma nodig en schrijven niets naar het register, en kijken vraagt geen beheerdersrechten. Iets wijzigen vraagt een sessie met verhoogde rechten, en beide helften zeggen dat in plaats van stil te mislukken - het venster biedt Restart as admin aan.

BestandWat het is
BetterWindowsServices-win-x64.zipHet venster, één zelfstandig uitvoerbaar bestand - geen .NET om te installeren
bws-cli-win-x64.zipDe opdrachtregel, één zelfstandig uitvoerbaar bestand, voor scripts en CI
BetterWindowsServices-win-x64.msiHet installatieprogramma: beide programma's voor elk account op de machine, het venster in het startmenu en bws in het PATH

De uitvoerbare bestanden dragen een Authenticode-handtekening, zodat Windows de uitgever noemt in plaats van te waarschuwen voor een onbekende.