Puneți mașinii o întrebare
Un singur limbaj, în caseta de căutare a ferestrei și în bws list --query. Un cuvânt simplu caută în nume, numele afișat, cont și calea de lansare. Un câmp îl restrânge. 21 câmpuri, iar același text înseamnă același lucru în ambele jumătăți ale instrumentului.
Șase care răspund la o întrebare reală
Ce ar trebui să fie pornit și nu este
start:auto !status:running
Prima interogare pe care o scriu majoritatea oamenilor, și cea la care services.msc nu poate răspunde deloc.
Servicii al căror fișier a dispărut
file:missing
O intrare care indică spre un executabil ce nu se află pe disc. De obicei, o dezinstalare care a lăsat înregistrarea în urmă.
Nesemnate, fără zgomotul sesiunilor
signed:no peruser:no
Familiile pe utilizator fac câte o copie pe sesiune și umplu lista cu aproape-duplicate. Aceasta întreabă despre restul.
Rulează deși este dezactivat
mismatch:running
Configurație și stare care nu concordă - o intrare pe care managerul este setat să n-o pornească niciodată, rulând totuși.
Tot ce cere drepturi de depanare
privilege:SeDebugPrivilege
Un privilegiu care permite unui proces să deschidă oricare altul. Merită să știți ce servicii îl cer.
Ce n-a putut citi instrumentul
account:?
Intrările la care această sesiune n-a putut citi contul. O întrebare pe care services.msc nici măcar nu o poate pune.
Cum se scrie o interogare
Termeni
- Termenii se separă prin spații și toți trebuie să se potrivească - nu există cuvântul-cheie
andpentru că n-ar putea însemna altceva. - Același câmp scris de două ori este singura excepție:
status:running status:stoppedînseamnă oricare dintre ele, pentru că asta scrie bifarea a două filtre. Două limite pe un număr tot restrâng -pid:>1000 pid:<2000este intervalul dintre ele. !în fața unui termen îl neagă:!status:running. Într-un fișier batch cusetlocal EnableDelayedExpansion, cmd înghite acel!fără un cuvânt, iar interogarea înseamnă în tăcere altceva - scrieți acolo^!între ghilimele.- O virgulă în interiorul unui câmp înseamnă sau:
start:manual,disabled. - Ghilimelele protejează orice conține spații sau două puncte:
account:"NT SERVICE\McmSvc". - O cale lipită ca atare -
C:\Windows\System32\svchost.exe- este căutată, nu citită ca un câmp numit C.
Cum se potrivește textul
name:spoolse potrivește cu orice îl conține - implicit, pentru că asta se așteaptă oamenii de la o casetă de căutare.name:=spoolereste exact.name:spool*acceptă metacaractere,*și?.name:/^Sql.*/este o expresie regulată și, între bare oblice, se scrie așa cum se scriu expresiile regulate:\?,\\și o virgulă înseamnă acolo ce înseamnă acolo. O bară oblică care nu se închide niciodată este o eroare - pentru a căuta bara însăși, scrieți\/sau folosiți ghilimele.- Majusculele sunt ignorate, inclusiv în afara ASCII - un nume afișat în poloneză sau greacă se potrivește oricum ar fi tastat.
Trei cuvinte pe care le acceptă fiecare câmp
any- există o valoare, oricare ar finone- chiar nu există nicio valoare - intrarea nu are una?- instrumentul n-a putut citi acest câmp sau nu l-a citit, ceea ce este o întrebare pe careservices.mscnici măcar nu o poate pune
O valoare scrisă greșit este o eroare, niciodată un rezultat gol. status:runing răspunde Did you mean running? și se încheie cu codul 2. O listă goală ar arăta ca un răspuns, iar diferența dintre "nimic nu se potrivește" și "ați scris greșit" este diferența dintre o mașină curată și un audit care n-a dovedit nimic. O interogare care n-ar restrânge nimic este refuzată și în linia de comandă, ca un script să nu opereze pe toată mașina din cauza unei greșeli de tastare.
Mai multe exemple
Fiecare funcționează la fel în caseta de căutare a ferestrei și după bws list --query, iar fiecare a fost rulat pe un Windows real înainte de a fi scris aici. Ce găsește depinde de mașină - iar pentru o întrebare despre probleme, un răspuns gol este cel pe care îl doriți.
Stare și tip de pornire
| Interogare | Ce găsește |
|---|---|
status:stopPending, | Blocat la oprire sau la pornire - așteptarea pe care snap-in-ul o arată și care nu se termină niciodată. |
start:auto status:stopped trigger:none | Setat să pornească automat, oprit și care nu așteaptă un declanșator - lista scurtă care merită citită după o repornire. |
start:delayed | Automat, pornit puțin după celelalte intrări automate. |
start:manual, | Rulează deși nimic nu îl pornește la boot - ceva l-a cerut, l-a pornit un declanșator sau cineva. |
Conturi
| Interogare | Ce găsește |
|---|---|
account:localsystem !publisher:microsoft | Rulează ca LocalSystem, cel mai puternic cont, dintr-un fișier pe care Microsoft nu l-a semnat. O interogare despre editor citește singură semnăturile, deci durează câteva secunde. |
!account:localsystem, | Servicii care rulează sub orice alt cont - unul virtual, unul gestionat sau al unei persoane. |
account:"NT SERVICE" | Un cont virtual al serviciului însuși. Ghilimelele țin cuvintele laolaltă, din cauza spațiului. |
Fișiere și semnături
| Interogare | Ce găsește |
|---|---|
signed:notSigned, | Fără semnătură, un lanț în care Windows nu are încredere sau un fișier modificat după ce a fost semnat. |
signed:trusted !publisher:microsoft | Semnat, de încredere și nu de Microsoft - software-ul pe care alte companii l-au pus pe această mașină. |
type:driver start:boot, | Drivere încărcate la pornirea Windows a căror semnătură nu inspiră încredere Windows-ului. Pe o mașină sănătoasă, niciunul. |
!path:C:\Windows type:ownProcess | Un serviciu cu propriul proces al cărui fișier se află în afara folderului Windows. |
path:\AppData\ | Lansat din interiorul profilului cuiva, ultimul loc în care se așteaptă un serviciu. |
path:\System32\\ type:ownProcess | O bară oblică inversă înaintea unui spațiu face spațiul parte din cuvânt, așa că o cale care se termină cu bară oblică inversă se scrie cu două atunci când după ea urmează alt termen. La sfârșitul interogării una este de ajuns. |
Declanșatoare și dependențe
| Interogare | Ce găsește |
|---|---|
trigger:device status:stopped | Așteaptă sosirea unui dispozitiv, deci oprit dintr-un motiv. |
trigger:network | Pornit când o cerere ajunge la un punct final de rețea - un port, o conductă numită sau o interfață RPC. |
trigger:stop | Intrări pe care un declanșator le poate opri, nu doar porni. |
dependson:Winmgmt | Intrări care au nevoie de WMI pentru a rula. |
requiredby:Spooler | Tot ce are nevoie Print Spooler ca să ruleze și ce au nevoie la rândul lor acelea. |
Privilegii și procese
| Interogare | Ce găsește |
|---|---|
privilege:SeTcbPrivilege | Cere să acționeze ca parte a sistemului de operare. |
privilege:SeImpersonatePrivilege !account:localsystem | Poate acționa în numele unui client rulând sub alt cont decât LocalSystem. |
sidtype:unrestricted | Poartă propriul SID de serviciu în procesul său, deci permisiunile îl pot numi doar pe el. sidtype:restricted întreabă despre cele al căror proces este și restricționat la scriere. |
type:sharedProcess status:running | Rulează în interiorul unui svchost partajat, împreună cu altele. |
memory:>200MB | Un proces care folosește mai mult de 200 MB. Memoria este citită singură când o interogare întreabă despre ea. |
pid:1000-2000 | Într-un proces al cărui id se află între 1000 și 2000. |
Nume și text
| Interogare | Ce găsește |
|---|---|
spool | Un cuvânt simplu, căutat în nume, numele afișat, cont și calea de lansare. |
name:=wuauserv | Exact acest nume și nimic care îl conține doar. |
name:win* | Nume care încep cu win, scrise cu metacaracter. |
name:/svc$/ | Nume care se termină în svc, scrise ca expresie regulată. |
description:none | Nicio descriere deloc, ceea ce este cazul majorității driverelor. |
description:? | O descriere pe care Windows n-a putut-o preda, de obicei pentru că indică un fișier de limbă care lipsește. |
peruser:template | Șabloanele pe utilizator pe care Windows le copiază pentru fiecare sesiune autentificată. |
Fiecare câmp
Construit din programul însuși, deci acest tabel nu se poate abate de la ce acceptă instrumentul. Un câmp fără listă de valori acceptă text, un număr sau o dimensiune - a treia coloană spune care.
| Câmp | Întreabă despre | Valori |
|---|---|---|
name | numele serviciului, cel după care îl identifică Windows | text |
display | numele afișat, așa cum îl scrie acest Windows | text |
description | ce spune intrarea despre sine | text |
type | ce fel de intrare este | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | dacă este una dintre familiile pe utilizator pe care Windows le copiază pentru fiecare sesiune | yes, no, template, instance |
status | ce face chiar acum | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | ce face managerul cu ea la următoarea pornire | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | contul sub care rulează, așa cum îl scrie managerul | text, de ex. localsystem |
pid | procesul în care rulează | un număr: 1234, >1000, 100-200 |
trigger | o condiție care o pornește sau o oprește | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | linia de comandă pe care o lansează managerul | text |
file | dacă fișierul pe care îl execută se află pe disc | present, missing |
signed | ce crede Windows despre semnătura fișierului, fără a verifica revocarea | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | cine a semnat fișierul - dovedit doar de o semnătură de încredere | text |
privilege | un privilegiu pe care îl cere intrarea | text, de ex. SeDebugPrivilege |
dependson | de ce are nevoie aceasta | un nume de serviciu |
requiredby | ce se defectează dacă aceasta se oprește | un nume de serviciu |
sidtype | tipul SID al serviciului | unrestricted, restricted, unknown |
sddl | descriptorul de securitate, ca text | text |
memory | ce folosește procesul ei | o dimensiune cu unitate: 500MB, >1GB, 100MB-1GB |
mismatch | configurație și stare care nu concordă | stopped, running |
Două lucruri bune de știut
Unele câmpuri sunt scumpe, iar a le cere pornește citirea
Semnăturile durează câteva secunde pe o mașină întreagă, iar memoria este o măsurătoare și nu o setare, așa că niciuna nu este citită pentru o listă decât dacă se cere. O interogare care menționează una pornește singură acea citire - nu trebuie să vă amintiți --signatures pe lângă signed:no. În fereastră, o interogare despre semnături spune că răspunsul este incomplet până sosesc, în loc să arate o listă mai scurtă ca și cum ar fi răspunsul.
Un rezultat judecat după ceva necitibil spune asta
Dacă intrările au fost judecate după un câmp pe care această sesiune nu l-a putut citi, rezultatul poartă o linie care spune câte - pentru că un astfel de rezultat poate lipsi intrări sau poate conține unele care nu îi aparțin. Este aceeași regulă pe care o respectă tot instrumentul: o citire eșuată este vizibilă în răspuns, niciodată înghițită. Un editor primește același tratament când doar certificatul îl afirmă: lângă orice verdict altul decât trusted numele este afișat ca not verified, iar publisher: socotește intrarea nesigură pe o linie proprie - deci !publisher:microsoft păstrează un fișier Microsoft pe care cineva l-a modificat după semnare.