Stel de machine een vraag
Eén taal, in het zoekvak van het venster en in bws list --query. Een kaal woord zoekt in de naam, de weergavenaam, het account en het opstartpad. Een veld beperkt het. 21 velden, en dezelfde tekst betekent hetzelfde in beide helften van het hulpmiddel.
Zes die een echte vraag beantwoorden
Wat zou moeten draaien en niet draait
start:auto !status:running
De eerste query die de meeste mensen schrijven, en die services.msc helemaal niet kan beantwoorden.
Services waarvan het bestand weg is
file:missing
Een item dat naar een uitvoerbaar bestand wijst dat niet op schijf staat. Meestal een verwijdering die de registratie heeft laten staan.
Niet ondertekend, zonder de sessieruis
signed:no peruser:no
De families per gebruiker maken per sessie een kopie en vullen een lijst met bijna-duplicaten. Dit vraagt naar de rest.
Draait terwijl uitgeschakeld
mismatch:running
Configuratie en toestand die het oneens zijn - een item dat de beheerder nooit hoort te starten, en dat toch draait.
Alles wat om foutopsporingsrechten vraagt
privilege:SeDebugPrivilege
Een bevoegdheid waarmee een proces elk ander proces kan openen. Het is de moeite waard te weten welke services erom vragen.
Wat het hulpmiddel niet kon lezen
account:?
De items waarvan deze sessie het account niet kon lezen. Een vraag die services.msc niet eens kan stellen.
Hoe een query wordt geschreven
Termen
- Termen worden gescheiden door spaties en ze moeten allemaal overeenkomen - er is geen sleutelwoord
andomdat het niets anders zou kunnen betekenen. - Hetzelfde veld twee keer geschreven is de enige uitzondering:
status:running status:stoppedbetekent een van beide, want dat is wat het aanvinken van twee filters schrijft. Twee grenzen op een getal beperken nog steeds -pid:>1000 pid:<2000is het bereik ertussen. !voor een term ontkent hem:!status:running. In een batchbestand metsetlocal EnableDelayedExpansioneet cmd die!zonder een woord op en betekent de query stilletjes iets anders - schrijf daar^!tussen de aanhalingstekens.- Een komma binnen een veld is of:
start:manual,disabled. - Aanhalingstekens beschermen alles met spaties of dubbele punten:
account:"NT SERVICE\McmSvc". - Een pad zoals het is geplakt -
C:\Windows\System32\svchost.exe- wordt gezocht, niet gelezen als een veld met de naam C.
Hoe tekst wordt vergeleken
name:spoolkomt overeen met alles wat het bevat - de standaard, want dat verwachten mensen van een zoekvak.name:=spooleris exact.name:spool*neemt jokertekens,*en?.name:/^Sql.*/is een reguliere expressie, en tussen de schuine strepen wordt ze geschreven zoals reguliere expressies worden geschreven:\?,\\en een komma betekenen daar wat ze daar betekenen. Een schuine streep die nooit sluit is een fout - om naar de schuine streep zelf te zoeken, schrijft u\/of gebruikt u aanhalingstekens.- Hoofdletters worden genegeerd, ook buiten ASCII - een weergavenaam in het Pools of Grieks komt overeen hoe hij ook wordt getypt.
Drie woorden die elk veld accepteert
any- er is een waarde, welke het ook isnone- er is echt geen waarde - het item heeft er geen?- het hulpmiddel kon dit veld niet lezen, of heeft het niet gelezen, wat een vraag is dieservices.mscniet eens kan stellen
Een verkeerd getypte waarde is een fout, nooit een leeg resultaat. status:runing antwoordt Did you mean running? en eindigt met code 2. Een lege lijst zou op een antwoord lijken, en het verschil tussen "niets komt overeen" en "u hebt het verkeerd getypt" is het verschil tussen een schone machine en een audit die niets bewees. Een query die niets zou beperken wordt ook op de opdrachtregel geweigerd, zodat een script niet op de hele machine werkt door een typefout.
Meer voorbeelden
Elk werkt hetzelfde in het zoekvak van het venster en na bws list --query, en elk is op een echte Windows uitgevoerd voordat het hier werd geschreven. Wat het vindt hangt af van de machine - en bij een vraag over problemen is een leeg antwoord degene die u wilt.
Toestand en opstarttype
| Query | Wat het vindt |
|---|---|
status:stopPending, | Vast bij stoppen of starten - het wachten dat de snap-in toont en dat nooit eindigt. |
start:auto status:stopped trigger:none | Ingesteld om automatisch te starten, gestopt, en niet wachtend op een trigger - de korte lijst die na een herstart de moeite van het lezen waard is. |
start:delayed | Automatisch, een beetje na de andere automatische items gestart. |
start:manual, | Draait hoewel niets het bij het opstarten start - iets heeft erom gevraagd, een trigger heeft het gestart, of iemand. |
Accounts
| Query | Wat het vindt |
|---|---|
account:localsystem !publisher:microsoft | Draait als LocalSystem, het sterkste account, vanuit een bestand dat Microsoft niet heeft ondertekend. Een query over de uitgever leest handtekeningen vanzelf, dus het duurt een paar seconden. |
!account:localsystem, | Services die onder een ander account draaien - een virtueel, een beheerd of dat van een persoon zelf. |
account:"NT SERVICE" | Een virtueel account van de service zelf. De aanhalingstekens houden de woorden bij elkaar, vanwege de spatie. |
Bestanden en handtekeningen
| Query | Wat het vindt |
|---|---|
signed:notSigned, | Geen handtekening, een keten die Windows niet vertrouwt, of een bestand dat is gewijzigd nadat het werd ondertekend. |
signed:trusted !publisher:microsoft | Ondertekend, vertrouwd, en niet door Microsoft - de software die andere bedrijven op deze machine hebben gezet. |
type:driver start:boot, | Stuurprogramma's die worden geladen terwijl Windows start en waarvan Windows de handtekening niet vertrouwt. Op een gezonde machine geen enkel. |
!path:C:\Windows type:ownProcess | Een service met een eigen proces waarvan het bestand buiten de Windows-map staat. |
path:\AppData\ | Gestart vanuit iemands profiel, de laatste plek waar een service wordt verwacht. |
path:\System32\\ type:ownProcess | Een backslash voor een spatie maakt de spatie deel van het woord, dus een pad dat op een backslash eindigt wordt met twee geschreven als er nog een term op volgt. Aan het eind van de query is één genoeg. |
Triggers en afhankelijkheden
| Query | Wat het vindt |
|---|---|
trigger:device status:stopped | Wacht tot een apparaat verschijnt, dus om een reden gestopt. |
trigger:network | Gestart wanneer een verzoek bij een netwerkeindpunt aankomt - een poort, een named pipe of een RPC-interface. |
trigger:stop | Items die een trigger kan stoppen, niet alleen starten. |
dependson:Winmgmt | Items die WMI nodig hebben om te draaien. |
requiredby:Spooler | Alles wat de Print Spooler nodig heeft om te draaien, en wat die op hun beurt nodig hebben. |
Bevoegdheden en processen
| Query | Wat het vindt |
|---|---|
privilege:SeTcbPrivilege | Vraagt om op te treden als deel van het besturingssysteem. |
privilege:SeImpersonatePrivilege !account:localsystem | Kan namens een client handelen terwijl het onder een ander account dan LocalSystem draait. |
sidtype:unrestricted | Draagt een eigen service-SID in zijn proces, zodat machtigingen het alleen kunnen noemen. sidtype:restricted vraagt naar degene waarvan het proces ook schrijfbeperkt is. |
type:sharedProcess status:running | Draait binnen een gedeelde svchost, samen met andere. |
memory:>200MB | Een proces dat meer dan 200 MB gebruikt. Geheugen wordt vanzelf gelezen wanneer een query erom vraagt. |
pid:1000-2000 | In een proces waarvan de id tussen 1000 en 2000 ligt. |
Namen en tekst
| Query | Wat het vindt |
|---|---|
spool | Een kaal woord, gezocht in de naam, de weergavenaam, het account en het opstartpad. |
name:=wuauserv | Precies deze naam, en niets wat hem alleen maar bevat. |
name:win* | Namen die met win beginnen, geschreven met een jokerteken. |
name:/svc$/ | Namen die op svc eindigen, geschreven als reguliere expressie. |
description:none | Helemaal geen beschrijving, wat bij de meeste stuurprogramma's zo is. |
description:? | Een beschrijving die Windows niet kon aanleveren, meestal omdat ze naar een taalbestand wijst dat er niet is. |
peruser:template | De sjablonen per gebruiker die Windows kopieert voor elke aangemelde sessie. |
Elk veld
Gebouwd uit het programma zelf, dus deze tabel kan niet afwijken van wat het hulpmiddel accepteert. Een veld zonder lijst met waarden neemt tekst, een getal of een grootte - de derde kolom zegt welke.
| Veld | Vraagt naar | Waarden |
|---|---|---|
name | de servicenaam, waaraan Windows hem herkent | tekst |
display | de weergavenaam, zoals dit Windows hem spelt | tekst |
description | wat het item over zichzelf zegt | tekst |
type | wat voor soort item het is | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | of het een van de families per gebruiker is waarvan Windows per sessie een kopie maakt | yes, no, template, instance |
status | wat het nu doet | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | wat de beheerder bij de volgende opstart met het doet | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | het account waaronder het draait, zoals de beheerder het spelt | tekst, bijv. localsystem |
pid | het proces waarin het draait | een getal: 1234, >1000, 100-200 |
trigger | een voorwaarde die het start of stopt | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | de opdrachtregel die de beheerder start | tekst |
file | of het bestand dat het uitvoert op schijf staat | present, missing |
signed | wat Windows van de handtekening van het bestand vindt, zonder intrekking te controleren | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | wie het bestand heeft ondertekend - alleen bewezen door een vertrouwde handtekening | tekst |
privilege | een bevoegdheid die het item aanvraagt | tekst, bijv. SeDebugPrivilege |
dependson | wat dit nodig heeft | een servicenaam |
requiredby | wat kapotgaat als dit stopt | een servicenaam |
sidtype | het SID-type van de service | unrestricted, restricted, unknown |
sddl | de beveiligingsdescriptor, als tekst | tekst |
memory | wat het proces gebruikt | een grootte met een eenheid: 500MB, >1GB, 100MB-1GB |
mismatch | configuratie en toestand die het oneens zijn | stopped, running |
Twee dingen om te weten
Sommige velden zijn duur, en erom vragen zet het lezen aan
Handtekeningen kosten enkele seconden over een hele machine en geheugen is een meting en geen instelling, dus geen van beide wordt voor een lijst gelezen tenzij erom gevraagd wordt. Een query die er een noemt zet dat lezen vanzelf aan - u hoeft niet aan --signatures te denken naast signed:no. In het venster zegt een query over handtekeningen dat het antwoord onvolledig is totdat ze er zijn, in plaats van een kortere lijst te tonen alsof dat het antwoord was.
Een resultaat dat op iets onleesbaars is beoordeeld, zegt dat
Als items zijn beoordeeld op een veld dat deze sessie niet kon lezen, draagt het resultaat een regel die zegt hoeveel - omdat zo'n resultaat items kan missen, of items kan bevatten die er niet in horen. Dat is dezelfde regel die het hele hulpmiddel aanhoudt: een mislukte lezing is zichtbaar in het antwoord, nooit ingeslikt. Een uitgever krijgt dezelfde behandeling wanneer alleen het certificaat hem beweert: naast elk ander oordeel dan trusted wordt de naam getoond als not verified, en publisher: telt het item als onzeker in een regel van zichzelf - dus !publisher:microsoft behoudt een Microsoft-bestand dat iemand na het ondertekenen heeft gewijzigd.