Faccia una domanda alla macchina
Un solo linguaggio, nella casella di ricerca della finestra e in bws list --query. Una parola sola cerca nel nome, nel nome visualizzato, nell'account e nel percorso di avvio. Un campo restringe la ricerca. 21 campi, e lo stesso testo significa la stessa cosa in entrambe le metà dello strumento.
Sei che rispondono a una domanda reale
Ciò che dovrebbe essere attivo e non lo è
start:auto !status:running
La prima query che scrive la maggior parte delle persone, e quella a cui services.msc non può rispondere affatto.
Servizi il cui file è sparito
file:missing
Una voce che punta a un eseguibile non presente sul disco. Di solito una disinstallazione che ha lasciato dietro di sé la registrazione.
Non firmati, senza il rumore delle sessioni
signed:no peruser:no
Le famiglie per utente fanno una copia per sessione e riempiono un elenco di quasi duplicati. Questa interroga il resto.
In esecuzione benché disabilitato
mismatch:running
Configurazione e stato che non concordano - una voce che il gestore è impostato a non avviare mai, in esecuzione comunque.
Tutto ciò che chiede diritti di debug
privilege:SeDebugPrivilege
Un privilegio che permette a un processo di aprirne qualsiasi altro. Vale la pena sapere quali servizi lo chiedono.
Ciò che lo strumento non ha potuto leggere
account:?
Le voci di cui questa sessione non ha potuto leggere l'account. Una domanda che services.msc non sa nemmeno porre.
Come si scrive una query
Termini
- I termini sono separati da spazi e devono corrispondere tutti - non esiste la parola chiave
andperché non potrebbe significare nient'altro. - Lo stesso campo scritto due volte è l'unica eccezione:
status:running status:stoppedsignifica l'uno o l'altro, perché è ciò che scrive spuntare due filtri. Due limiti su un numero invece restringono -pid:>1000 pid:<2000è l'intervallo tra i due. !davanti a un termine lo nega:!status:running. In un file batch consetlocal EnableDelayedExpansion, cmd si mangia quel!senza dire nulla e la query significa in silenzio qualcos'altro - scriva^!dentro le virgolette lì.- Una virgola dentro un campo è un oppure:
start:manual,disabled. - Le virgolette proteggono qualsiasi cosa con spazi o due punti:
account:"NT SERVICE\McmSvc". - Un percorso incollato così com'è -
C:\Windows\System32\svchost.exe- viene cercato, non letto come un campo chiamato C.
Come viene confrontato il testo
name:spooltrova tutto ciò che lo contiene - il comportamento predefinito, perché è ciò che ci si aspetta da una casella di ricerca.name:=spoolerè esatto.name:spool*accetta caratteri jolly,*e?.name:/^Sql.*/è un'espressione regolare, e dentro le barre si scrive come si scrivono le espressioni regolari:\?,\\e una virgola significano lì ciò che significano lì. Una barra che non si chiude mai è un errore - per cercare la barra stessa, scriva\/oppure usi le virgolette.- Maiuscole e minuscole sono ignorate, anche fuori da ASCII - un nome visualizzato in polacco o in greco corrisponde comunque sia digitato.
Tre parole che ogni campo accetta
any- c'è un valore, qualunque sianone- non c'è davvero alcun valore - la voce non ne ha?- lo strumento non ha potuto leggere questo campo, o non lo ha letto, il che è una domanda cheservices.mscnon sa nemmeno porre
Un valore digitato male è un errore, mai un risultato vuoto. status:runing risponde Did you mean running? e termina con il codice 2. Un elenco vuoto sembrerebbe una risposta, e la differenza tra "nulla corrisponde" e "ha digitato male" è la differenza tra una macchina pulita e un audit che non ha dimostrato nulla. Una query che non restringerebbe nulla viene rifiutata anche sulla riga di comando, perché uno script non operi sull'intera macchina a causa di un refuso.
Altri esempi
Ognuno funziona allo stesso modo nella casella di ricerca della finestra e dopo bws list --query, e ognuno è stato eseguito su un vero Windows prima di essere scritto qui. Ciò che trova dipende dalla macchina - e per una domanda sui guai, una risposta vuota è quella che vuole.
Stato e tipo di avvio
| Query | Cosa trova |
|---|---|
status:stopPending, | Bloccati in arresto o in avvio - l'attesa che lo snap-in mostra e che non finisce mai. |
start:auto status:stopped trigger:none | Impostati per avviarsi automaticamente, fermi, e che non attendono un trigger - il breve elenco che vale la pena leggere dopo un riavvio. |
start:delayed | Automatico, avviato un poco dopo le altre voci automatiche. |
start:manual, | In esecuzione benché nulla lo avvii all'avvio - qualcosa lo ha richiesto, un trigger lo ha avviato, o qualcuno lo ha fatto. |
Account
| Query | Cosa trova |
|---|---|
account:localsystem !publisher:microsoft | In esecuzione come LocalSystem, l'account più potente, da un file che Microsoft non ha firmato. Una query sull'editore legge le firme da sola, quindi richiede qualche secondo. |
!account:localsystem, | Servizi in esecuzione con qualsiasi altro account - uno virtuale, uno gestito o quello di una persona. |
account:"NT SERVICE" | Un account virtuale proprio del servizio. Le virgolette tengono insieme le parole, a causa dello spazio. |
File e firme
| Query | Cosa trova |
|---|---|
signed:notSigned, | Nessuna firma, una catena di cui Windows non si fida, o un file modificato dopo essere stato firmato. |
signed:trusted !publisher:microsoft | Firmato, affidabile, e non da Microsoft - il software che altre aziende hanno messo su questa macchina. |
type:driver start:boot, | Driver caricati all'avvio di Windows la cui firma Windows non ritiene affidabile. Su una macchina sana, nessuno. |
!path:C:\Windows type:ownProcess | Un servizio con un processo proprio il cui file si trova fuori dalla cartella Windows. |
path:\AppData\ | Avviato da dentro il profilo di qualcuno, l'ultimo posto in cui ci si aspetta un servizio. |
path:\System32\\ type:ownProcess | Una barra rovesciata davanti a uno spazio rende lo spazio parte della parola, quindi un percorso che finisce con una barra rovesciata si scrive con due quando segue un altro termine. Alla fine della query ne basta una. |
Trigger e dipendenze
| Query | Cosa trova |
|---|---|
trigger:device status:stopped | In attesa dell'arrivo di un dispositivo, quindi fermi per un motivo. |
trigger:network | Avviato quando arriva una richiesta a un endpoint di rete - una porta, una named pipe o un'interfaccia RPC. |
trigger:stop | Voci che un trigger può fermare, non solo avviare. |
dependson:Winmgmt | Voci che hanno bisogno di WMI per funzionare. |
requiredby:Spooler | Tutto ciò di cui lo Spooler di stampa ha bisogno per funzionare, e ciò di cui a loro volta hanno bisogno quelli. |
Privilegi e processi
| Query | Cosa trova |
|---|---|
privilege:SeTcbPrivilege | Chiede di agire come parte del sistema operativo. |
privilege:SeImpersonatePrivilege !account:localsystem | Può agire per conto di un client pur girando con un account diverso da LocalSystem. |
sidtype:unrestricted | Porta nel suo processo un SID di servizio proprio, così i permessi possono nominarlo da solo. sidtype:restricted interroga quelli il cui processo è anche limitato in scrittura. |
type:sharedProcess status:running | In esecuzione dentro uno svchost condiviso, insieme ad altri. |
memory:>200MB | Un processo che usa più di 200 MB. La memoria viene letta da sola quando una query la chiede. |
pid:1000-2000 | In un processo il cui id è tra 1000 e 2000. |
Nomi e testo
| Query | Cosa trova |
|---|---|
spool | Una parola sola, cercata nel nome, nel nome visualizzato, nell'account e nel percorso di avvio. |
name:=wuauserv | Esattamente questo nome, e nulla che lo contenga soltanto. |
name:win* | Nomi che iniziano con win, scritti con un carattere jolly. |
name:/svc$/ | Nomi che finiscono in svc, scritti come espressione regolare. |
description:none | Nessuna descrizione, il che vale per la maggior parte dei driver. |
description:? | Una descrizione che Windows non ha potuto consegnare, di solito perché punta a un file di lingua che non c'è. |
peruser:template | I modelli per utente che Windows copia per ogni sessione aperta. |
Ogni campo
Costruita dal programma stesso, così questa tabella non può discostarsi da ciò che lo strumento accetta. Un campo senza elenco di valori accetta testo, un numero o una dimensione - la terza colonna dice quale.
| Campo | Interroga su | Valori |
|---|---|---|
name | il nome del servizio, quello con cui Windows lo identifica | testo |
display | il nome visualizzato, come lo scrive questo Windows | testo |
description | ciò che la voce dice di sé | testo |
type | che tipo di voce è | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | se è una delle famiglie per utente di cui Windows fa una copia per sessione | yes, no, template, instance |
status | cosa sta facendo in questo momento | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | cosa fa il gestore con essa al prossimo avvio | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | l'account con cui gira, come lo scrive il gestore | testo, ad es. localsystem |
pid | il processo in cui gira | un numero: 1234, >1000, 100-200 |
trigger | una condizione che la avvia o la ferma | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | la riga di comando che il gestore avvia | testo |
file | se il file che esegue è sul disco | present, missing |
signed | cosa pensa Windows della firma del file, senza controllare la revoca | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | chi ha firmato il file - dimostrato solo da una firma affidabile | testo |
privilege | un privilegio che la voce chiede | testo, ad es. SeDebugPrivilege |
dependson | di cosa ha bisogno questa | un nome di servizio |
requiredby | cosa smette di funzionare se questa si ferma | un nome di servizio |
sidtype | il tipo di SID del servizio | unrestricted, restricted, unknown |
sddl | il descrittore di sicurezza, come testo | testo |
memory | cosa usa il suo processo | una dimensione con unità: 500MB, >1GB, 100MB-1GB |
mismatch | configurazione e stato che non concordano | stopped, running |
Due cose da sapere
Alcuni campi sono costosi, e chiederli attiva la lettura
Le firme richiedono parecchi secondi su un'intera macchina e la memoria è una misurazione più che un'impostazione, quindi nessuna delle due viene letta per un elenco se non richiesta. Una query che ne menziona una attiva quella lettura da sola - non deve ricordarsi di --signatures oltre a signed:no. Nella finestra, una query sulle firme dice che la risposta è incompleta finché non arrivano, invece di mostrare un elenco più corto come se fosse la risposta.
Un risultato giudicato su qualcosa di illeggibile lo dice
Se delle voci sono state giudicate su un campo che questa sessione non ha potuto leggere, il risultato porta una riga che dice quante - perché un risultato simile può mancare di voci, o contenerne che non c'entrano. È la stessa regola che tiene tutto lo strumento: una lettura non riuscita è visibile nella risposta, mai inghiottita. Un editore riceve lo stesso trattamento quando solo il certificato lo afferma: accanto a qualsiasi verdetto diverso da trusted il nome è mostrato come not verified, e publisher: conta la voce come incerta in una riga a parte - così !publisher:microsoft tiene un file Microsoft che qualcuno ha modificato dopo la firma.