Căutați în serviciile Windows, previzualizați fiecare modificare și vedeți ce a derivat de ieri

Better Windows Services este services.msc reconstruit pentru cei care administrează mașini Windows - o fereastră și o linie de comandă peste același motor. Puneți mașinii o întrebare în loc să derulați opt sute de rânduri. Vedeți ce va face o modificare înainte să apăsați orice. Și ceea ce services.msc nu a avut niciodată: înghețați fiecare serviciu într-un fișier și, peste o săptămână, întrebați ce s-a schimbat.

  • Liber și gratuit, GPL-3.0
  • Un singur fișier sau un program de instalare
  • Nu cere drepturi de administrator pentru a privi
  • Nu comunică niciodată cu internetul
Fereastra cu cinci intrări alese și planul pentru pornirea lor afișat deasupra listei: cinci pași, o notă că două dintre ele sunt deja în acea stare, o linie bws start pentru fiecare intrare și butonul Start 5 entries.
Intrări alese, un plan afișat înainte să se întâmple ceva și linia bws care cere exact același lucru. Programul vorbește engleza - fereastra citește un fișier de limbă așezat lângă ea, deci o traducere este posibilă fără recompilare.
O jumătate de minut cu el

Cum arată în uz

O sesiune reală, pe un Windows instalat în poloneză - numele afișate vin de la Windows, deci sunt în limba lui. Fereastra însăși vorbește engleza.

Patru intrări alese și planul pentru pornirea lor, o repornire forțată a serviciului Local Session Manager al cărei plan avertizează că mașina nu funcționează fără el și cere numele lui înainte ca butonul să funcționeze, întrebările de pornire de sub caseta de căutare goală și Print Spooler găsit tastând o parte din nume și pornit.
Patru intrări alese și planul pentru pornirea lor, o repornire forțată care cere numele unui serviciu de care mașina are nevoie, întrebările de sub o casetă de căutare goală și Print Spooler găsit prin tastare și pornit.
Ecranul de deschidere: trei carduri cu numere despre această mașină - servicii care rulează, servicii setate să pornească automat care nu au pornit și servicii setate să pornească automat al căror fișier lipsește - și un buton Show the list.
Se deschide cu câteva numere despre această mașină. Fiecare este o întrebare - faceți clic pe ea și întrebarea ajunge în caseta de căutare.
Lista serviciilor cu cele trei liste deasupra casetei de căutare, o casetă de căutare goală, butoanele de filtrare deschise pe rânduri pentru stare, tip de pornire, semnătură, neconcordanțe și declanșatoare, iar dedesubt lista.
Butoanele de filtrare scriu în caseta de căutare, așa că ceea ce ați apăsat este o interogare pe care o puteți citi și edita.
De ce există

services.msc aproape că nu s-a schimbat din Windows 2000

Administratorii petrec ore pe săptămână în el, lovindu-se de aceleași ziduri.

  • Fără căutare. Singura navigare este saltul la prima literă a unui nume afișat.
  • Fără filtrare. Nu există nicio cale de a întreba arată-mi ce este setat să pornească automat și nu rulează.
  • Un singur rând pe rând. Repornirea a douăsprezece servicii înseamnă douăsprezece clicuri dreapta și douăsprezece așteptări.
  • "Stopping..." la nesfârșit, fără altă ieșire decât Task Manager și ghicitul procesului.
  • Fără istoric. Nimeni nu știe cine a setat acel tip de pornire pe Disabled, sau când.
  • Date ascunse. Procesul, declanșatoarele, privilegiile, descriptorul de securitate, cine a semnat fișierul executabil - toate cer sc.exe din memorie sau registrul.
  • Fără echivalent în linia de comandă. sc.exe are o sintaxă din anii nouăzeci, iar Get-Service care vine cu Windows, în Windows PowerShell 5.1, nu arată contul sub care rulează un serviciu, darămite descrierea lui. PowerShell 7 le arată pe amândouă și se instalează separat.

Celelalte instrumente rezolvă fiecare o parte

Process Hacker și System Informer arată o listă bogată și pot forța încheierea unui proces, dar nu au audit și nici linie de comandă. sc.exe și PsService pot face orice și nu vă spun nimic. Cmdleturile *-Service din PowerShell se pot automatiza și sunt superficiale.

Nimeni nu combină o listă în care se poate căuta, o previzualizare înainte de fiecare modificare și o evidență a ceea ce s-a schimbat în timp - iar evidența este motivul pentru care merită păstrat acest instrument pe o mașină după prima după-amiază.

Comparația completă
Ce face

O fereastră și o linie de comandă peste același motor

Întrebați, în loc să derulați

start:auto !status:running înseamnă ce ar trebui să fie pornit și nu este. Un singur limbaj, în caseta de căutare și în bws list --query, cu câmpurile oferite pe măsură ce tastați.

Arată planul înainte să se întâmple ceva

Fiecare oprire, pornire, repornire și schimbare a tipului de pornire este previzualizată împreună cu serviciile pe care le trage după ea, iar previzualizarea este ceea ce se execută.

Spune ce a derivat și cine a schimbat

bws snapshot create îngheață mașina într-un fișier, iar bws snapshot diff spune ce s-a schimbat de atunci, configurația separat de ceea ce doar a pornit sau s-a oprit. bws history spune, din jurnalul System, cine a schimbat un tip de pornire și cine a instalat un serviciu. Fereastra le face pe toate trei la Audit....

Remediază o problemă frecventă dintr-o apăsare

Fila Tools și bws tool fix repornesc serviciul din spatele unei imprimante care nu tipărește, al sunetului dispărut sau al unei căutări blocate, împreună cu ce depinde de el, prin același plan ca orice altceva.

Oprește un serviciu care nu vrea să se oprească

Cere mai întâi politicos și încheie procesul doar dacă asta eșuează, numind fiecare alt serviciu care trăiește în el.

Arată ce ascunde services.msc

Cine a semnat fișierul executabil și dacă Windows are încredere în el, declanșatoare, privilegii, descriptorul de securitate, procesul și memoria lui. Ca coloane și ca lucruri după care se poate căuta.

Spune când n-a putut citi ceva

Un câmp pe care nu l-a putut citi este raportat ca necitit, niciodată afișat ca gol. Un instantaneu făcut fără drepturi de administrator spune asta în interiorul fișierului.

Se potrivește în scripturi

--json la fiecare comandă, un cod de ieșire pentru fiecare final și 5 când o comparație găsește derivă.

Rulează dintr-un singur fișier, offline

Dezarhivați și rulați sau instalați pentru toată mașina. Fără .NET de instalat și nu comunică niciodată cu internetul. Citirea nu cere drepturi de administrator. GPL-3.0.

Ceea ce services.msc nu a făcut niciodată

Ce s-a schimbat de ieri

Un instantaneu este întreaga mașină la un moment dat - fiecare serviciu și driver, cu tipul de pornire, contul, calea de lansare, hash-ul și semnatarul fișierului, dependențele, declanșatoarele, privilegiile și descriptorul de securitate. Este JSON cu un câmp pe rând, deci poate intra într-un depozit și git diff îl citeș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.
  • Configurația și starea de rulare sunt raportate separat. Două instantanee făcute la o zi distanță diferă prin ce se întâmplă să ruleze și aproape nimic din asta nu este derivă - tipul de pornire care s-a schimbat este rândul de citit.
  • Ce nu s-a putut compara este listat, nu ascuns. Un câmp pe care un instantaneu nu l-a citit niciodată iese ca not compared, deci o comparație care spune nimic nu s-a schimbat înseamnă că nimic nu s-a schimbat în ceea ce vedeau ambele părți.
  • --exit-code se încheie cu 5 când configurația diferă, astfel încât o sarcină programată poate face un instantaneu la implementare și poate alerta pe cineva în prima noapte în care mașina derivă.
  • Două mașini, două fișiere. Faceți un instantaneu pe mediul de testare și unul pe producție și comparați-le oriunde.
Cum funcționează instantaneele și deriva
Nimic nu se întâmplă fără plan

Previzualizarea este execuția

Fiecare operație care scrie construiește mai întâi un plan, iar același plan este previzualizarea, cascada serviciilor dependente, refuzul înainte să apăsați orice, linia de comandă care cere același lucru și drumul înapoi după aceea.

$ 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.
  • Rulați fără --dry-run și acestea sunt pașii, în această ordine, cu aceleași motive alături. Nu există o a doua cale de cod pentru execuția reală.
  • Ce cade odată cu el este în plan. Serviciile care s-ar defecta sunt pași de sine stătători, iar un plan care ar doborî ceva de care mașina are nevoie spune asta în avertismente.
  • Un refuz vine înaintea butonului. Un driver, un serviciu pentru care managerul nu acceptă o oprire, un proces pe care sistemul îl protejează - refuzat la construirea planului, cu motivul. Fereastra face butonul gri și spune alături de ce.
  • Oprirea forțată înseamnă doi pași, iar al doilea este condiționat. bws kill cere serviciului să se oprească și îi încheie procesul doar dacă asta nu funcționează, numind fiecare alt serviciu care trăiește în el.
Când un serviciu nu se oprește
Două minute cu el

Din linia de comandă

Același motor ca fereastra, pentru scripturi, sarcini programate și CI. Datele merg la ieșirea standard și tot restul la eroarea standard, deci bws list --json | jq funcționează, iar un avertisment nu ajunge niciodată în JSON-ul dumneavoastră.

bws list --query "start:auto !status:running"     ce ar trebui să fie pornit și nu este
bws list --query "file:missing"                   servicii al căror fișier executabil a dispărut
bws list --query "signed:no peruser:no"           nesemnate, fără copiile pe sesiune
bws show Spooler                                  tot ce se știe despre o intrare
bws stop Winmgmt --dry-run --dependents           ce ar doborî oprirea lui
bws kill Spooler --dry-run                        ce ar lua cu sine încheierea procesului lui
bws start-type Spooler manual --dry-run           ce ar face scoaterea lui din pornirea automată
bws snapshot create before.json                   îngheață mașina înainte de o schimbare
bws snapshot diff before.json --live --exit-code  ce s-a schimbat de atunci, 5 dacă s-a schimbat configurația
bws history Spooler                               cine i-a schimbat tipul de pornire și când
bws tool fix printer --dry-run                    ce ar face remedierea rapidă pentru o imprimantă blocată
Fiecare comandă, opțiune și cod de ieșire
Obțineți-l

Dezarhivați și rulați, sau instalați

Windows 10 1809 sau Windows Server 2019 și mai noi, pe 64 de biți. Arhivele nu au nevoie de program de instalare și nu scriu nimic în registru, iar privitul nu cere drepturi de administrator. Orice modificare cere o sesiune cu drepturi ridicate, iar ambele jumătăți spun asta în loc să eșueze în tăcere - fereastra oferă Restart as admin.

FișierCe este
BetterWindowsServices-win-x64.zipFereastra, un singur executabil independent - fără .NET de instalat
bws-cli-win-x64.zipLinia de comandă, un singur executabil independent, pentru scripturi și CI
BetterWindowsServices-win-x64.msiProgramul de instalare: ambele programe pentru fiecare cont de pe mașină, fereastra în meniul Start și bws în PATH

Executabilele poartă o semnătură Authenticode, așa că Windows numește editorul în loc să avertizeze despre unul necunoscut.