Haga una pregunta al equipo
Un único lenguaje, en el cuadro de búsqueda de la ventana y en bws list --query. Una palabra suelta busca en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento. Un campo la acota. 21 campos, y el mismo texto significa lo mismo en ambas mitades de la herramienta.
Seis que responden a una pregunta real
Lo que debería estar en marcha y no lo está
start:auto !status:running
La primera consulta que escribe casi todo el mundo, y la que services.msc no puede responder en absoluto.
Servicios cuyo archivo ha desaparecido
file:missing
Una entrada que apunta a un ejecutable que no está en el disco. Normalmente una desinstalación que dejó el registro tras de sí.
Sin firmar, sin el ruido de las sesiones
signed:no peruser:no
Las familias por usuario hacen una copia por sesión y llenan una lista de casi duplicados. Esto pregunta por el resto.
En marcha aunque esté deshabilitado
mismatch:running
Configuración y estado que no concuerdan: una entrada que el administrador tiene configurada para no iniciarse nunca, ejecutándose igualmente.
Todo lo que pide derechos de depuración
privilege:SeDebugPrivilege
Un privilegio que permite a un proceso abrir cualquier otro. Conviene saber qué servicios lo piden.
Lo que la herramienta no pudo leer
account:?
Las entradas cuya cuenta esta sesión no pudo leer. Una pregunta que services.msc ni siquiera puede hacer.
Cómo se escribe una consulta
Términos
- Los términos se separan con espacios y todos deben coincidir: no hay palabra clave
andporque no podría significar otra cosa. - El mismo campo escrito dos veces es la única excepción:
status:running status:stoppedsignifica uno u otro, porque eso es lo que escribe marcar dos filtros. Dos límites sobre un número sí acotan:pid:>1000 pid:<2000es el intervalo entre ambos. !delante de un término lo niega:!status:running. En un archivo por lotes consetlocal EnableDelayedExpansion, cmd se come ese!sin decir nada y la consulta significa en silencio otra cosa: escriba^!entre las comillas allí.- Una coma dentro de un campo es un o:
start:manual,disabled. - Las comillas protegen todo lo que lleve espacios o dos puntos:
account:"NT SERVICE\McmSvc". - Una ruta pegada tal cual,
C:\Windows\System32\svchost.exe, se busca, no se lee como un campo llamado C.
Cómo se compara el texto
name:spoolcoincide con todo lo que lo contiene: es lo predeterminado, porque es lo que se espera de un cuadro de búsqueda.name:=spooleres exacto.name:spool*admite comodines,*y?.name:/^Sql.*/es una expresión regular, y entre las barras se escribe como se escriben las expresiones regulares:\?,\\y una coma significan allí lo que significan allí. Una barra que nunca se cierra es un error; para buscar la propia barra, escriba\/o use comillas.- Se ignoran las mayúsculas y minúsculas, también fuera de ASCII: un nombre para mostrar en polaco o en griego coincide se escriba como se escriba.
Tres palabras que acepta cualquier campo
any- hay un valor, sea cual seanone- realmente no hay ningún valor: la entrada no tiene ninguno?- la herramienta no pudo leer este campo, o no lo ha leído, lo que es una pregunta queservices.mscni siquiera puede hacer
Un valor mal escrito es un error, nunca un resultado vacío. status:runing responde Did you mean running? y termina con el código 2. Una lista vacía parecería una respuesta, y la diferencia entre "nada coincide" y "lo escribió mal" es la diferencia entre un equipo limpio y una auditoría que no demostró nada. Una consulta que no acotaría nada también se rechaza en la línea de comandos, para que un script no opere sobre todo el equipo por una errata.
Más ejemplos
Cada uno funciona igual en el cuadro de búsqueda de la ventana y después de bws list --query, y cada uno se ejecutó en un Windows real antes de escribirse aquí. Lo que encuentra depende del equipo, y para una pregunta sobre problemas, una respuesta vacía es la que usted quiere.
Estado y tipo de inicio
| Consulta | Qué encuentra |
|---|---|
status:stopPending, | Atascados al detenerse o al iniciarse: la espera que muestra el complemento y que nunca termina. |
start:auto status:stopped trigger:none | Configurados para iniciarse automáticamente, detenidos y sin esperar a un desencadenador: la lista corta que vale la pena leer tras un reinicio. |
start:delayed | Automático, iniciado un poco después de las demás entradas automáticas. |
start:manual, | En marcha aunque nada lo inicie al arrancar: algo lo pidió, un desencadenador lo inició o alguien lo hizo. |
Cuentas
| Consulta | Qué encuentra |
|---|---|
account:localsystem !publisher:microsoft | Se ejecuta como LocalSystem, la cuenta más poderosa, desde un archivo que Microsoft no firmó. Una consulta sobre el editor lee las firmas por sí sola, así que tarda unos segundos. |
!account:localsystem, | Servicios que se ejecutan bajo cualquier otra cuenta: una virtual, una administrada o la de una persona. |
account:"NT SERVICE" | Una cuenta virtual del propio servicio. Las comillas mantienen juntas las palabras, por el espacio. |
Archivos y firmas
| Consulta | Qué encuentra |
|---|---|
signed:notSigned, | Sin firma, una cadena en la que Windows no confía, o un archivo modificado después de firmarse. |
signed:trusted !publisher:microsoft | Firmado, de confianza y no por Microsoft: el software que otras empresas han puesto en este equipo. |
type:driver start:boot, | Controladores cargados al arrancar Windows cuya firma Windows no considera de confianza. En un equipo sano, ninguno. |
!path:C:\Windows type:ownProcess | Un servicio con proceso propio cuyo archivo está fuera de la carpeta de Windows. |
path:\AppData\ | Lanzado desde dentro del perfil de alguien, el último lugar donde se espera un servicio. |
path:\System32\\ type:ownProcess | Una barra invertida delante de un espacio hace que el espacio forme parte de la palabra, así que una ruta que acaba en barra invertida se escribe con dos cuando le sigue otro término. Al final de la consulta basta una. |
Desencadenadores y dependencias
| Consulta | Qué encuentra |
|---|---|
trigger:device status:stopped | Esperando a que llegue un dispositivo, por lo que están detenidos por una razón. |
trigger:network | Iniciado cuando llega una solicitud a un punto de conexión de red: un puerto, una canalización con nombre o una interfaz RPC. |
trigger:stop | Entradas que un desencadenador puede detener, no solo iniciar. |
dependson:Winmgmt | Entradas que necesitan WMI para ejecutarse. |
requiredby:Spooler | Todo lo que el Print Spooler necesita para ejecutarse, y lo que a su vez necesitan esos. |
Privilegios y procesos
| Consulta | Qué encuentra |
|---|---|
privilege:SeTcbPrivilege | Pide actuar como parte del sistema operativo. |
privilege:SeImpersonatePrivilege !account:localsystem | Puede actuar en nombre de un cliente mientras se ejecuta bajo una cuenta distinta de LocalSystem. |
sidtype:unrestricted | Lleva en su proceso un SID de servicio propio, de modo que los permisos pueden nombrarlo a él solo. sidtype:restricted pregunta por aquellos cuyo proceso además tiene restringida la escritura. |
type:sharedProcess status:running | En ejecución dentro de un svchost compartido, junto con otros. |
memory:>200MB | Un proceso que usa más de 200 MB. La memoria se lee por sí sola cuando una consulta pregunta por ella. |
pid:1000-2000 | En un proceso cuyo identificador está entre 1000 y 2000. |
Nombres y texto
| Consulta | Qué encuentra |
|---|---|
spool | Una palabra suelta, buscada en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento. |
name:=wuauserv | Exactamente este nombre, y nada que solo lo contenga. |
name:win* | Nombres que empiezan por win, escritos con un comodín. |
name:/svc$/ | Nombres que terminan en svc, escritos como expresión regular. |
description:none | Ninguna descripción en absoluto, que es el caso de la mayoría de los controladores. |
description:? | Una descripción que Windows no pudo entregar, normalmente porque apunta a un archivo de idioma que no está. |
peruser:template | Las plantillas por usuario que Windows copia para cada sesión iniciada. |
Cada campo
Construida a partir del propio programa, de modo que esta tabla no puede desviarse de lo que acepta la herramienta. Un campo sin lista de valores acepta texto, un número o un tamaño; la tercera columna dice cuál.
| Campo | Pregunta por | Valores |
|---|---|---|
name | el nombre del servicio, por el que lo identifica Windows | texto |
display | el nombre para mostrar, como lo escribe este Windows | texto |
description | lo que la entrada dice de sí misma | texto |
type | qué clase de entrada es | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | si es una de las familias por usuario de las que Windows hace una copia por sesión | yes, no, template, instance |
status | lo que está haciendo ahora mismo | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | lo que hace el administrador con ella en el próximo arranque | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | la cuenta con la que se ejecuta, como la escribe el administrador | texto, p. ej. localsystem |
pid | el proceso en el que se ejecuta | un número: 1234, >1000, 100-200 |
trigger | una condición que la inicia o la detiene | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | la línea de comandos que lanza el administrador | texto |
file | si el archivo que ejecuta está en el disco | present, missing |
signed | lo que Windows piensa de la firma del archivo, sin comprobar la revocación | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | quién firmó el archivo: solo demostrado por una firma de confianza | texto |
privilege | un privilegio que pide la entrada | texto, p. ej. SeDebugPrivilege |
dependson | lo que necesita esta | un nombre de servicio |
requiredby | lo que deja de funcionar si esta se detiene | un nombre de servicio |
sidtype | el tipo de SID del servicio | unrestricted, restricted, unknown |
sddl | el descriptor de seguridad, como texto | texto |
memory | lo que usa su proceso | un tamaño con unidad: 500MB, >1GB, 100MB-1GB |
mismatch | configuración y estado que no concuerdan | stopped, running |
Dos cosas que conviene saber
Algunos campos son caros, y pedirlos activa la lectura
Las firmas tardan varios segundos en todo un equipo y la memoria es una medición y no un ajuste, así que ninguna se lee para un listado salvo que se pida. Una consulta que menciona una activa esa lectura por sí sola: no tiene que acordarse de --signatures además de signed:no. En la ventana, una consulta sobre firmas dice que la respuesta está incompleta hasta que llegan, en lugar de mostrar una lista más corta como si fuera la respuesta.
Un resultado juzgado sobre algo ilegible lo dice
Si se juzgaron entradas por un campo que esta sesión no pudo leer, el resultado lleva una línea que dice cuántas, porque un resultado así puede estar omitiendo entradas, o contener otras que no corresponden. Es la misma regla que sigue toda la herramienta: una lectura fallida es visible en la respuesta, nunca se traga. Un editor recibe el mismo trato cuando solo el certificado lo afirma: junto a cualquier veredicto que no sea trusted el nombre se muestra como not verified, y publisher: cuenta la entrada como dudosa en una línea aparte, de modo que !publisher:microsoft conserva un archivo de Microsoft que alguien modificó después de firmarse.