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
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.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.
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.exeuit het hoofd, of het register. - Geen gelijkwaardigheid op de opdrachtregel.
sc.exeheeft een syntaxis uit de jaren negentig, en deGet-Servicedie 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 vergelijkingEen 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 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-codeeindigt met5wanneer 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.
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-runen 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 killvraagt de service te stoppen en beëindigt het proces alleen als dat niet werkt, waarbij elke andere service die erin leeft wordt genoemd.
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
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.
| Bestand | Wat het is |
|---|---|
BetterWindowsServices-win-x64.zip | Het venster, één zelfstandig uitvoerbaar bestand - geen .NET om te installeren |
bws-cli-win-x64.zip | De opdrachtregel, één zelfstandig uitvoerbaar bestand, voor scripts en CI |
BetterWindowsServices-win-x64.msi | Het 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.

