Busque sus servicios de Windows, vea cada cambio antes de ejecutarlo y descubra qué se ha desviado desde ayer

Better Windows Services es services.msc reconstruido para quienes administran equipos Windows: una ventana y una línea de comandos sobre un único motor. Haga una pregunta al equipo en lugar de recorrer ochocientas filas. Vea qué hará un cambio antes de pulsar nada. Y lo que services.msc nunca tuvo: congelar cada servicio en un archivo y, una semana después, preguntar qué cambió.

  • Libre y gratuito, GPL-3.0
  • Un solo archivo, o un instalador
  • Sin derechos de administrador para consultar
  • Nunca se conecta a Internet
La ventana con cinco entradas seleccionadas y el plan para iniciarlas mostrado sobre la lista: cinco pasos, una nota de que dos de ellas ya están en ese estado, una línea bws start por cada entrada y el botón Start 5 entries.
Entradas seleccionadas, un plan mostrado antes de que ocurra nada y la línea bws que pide exactamente lo mismo. El programa habla inglés: la ventana lee un archivo de idioma colocado junto a ella, así que es posible traducirla sin recompilar.
Medio minuto con él

Cómo se ve en uso

Una sesión real, en un Windows instalado en polaco: los nombres para mostrar vienen de Windows, así que están en su idioma. La ventana en sí habla inglés.

Cuatro entradas seleccionadas y el plan para iniciarlas, un reinicio forzado del Local Session Manager cuyo plan advierte de que el equipo no funciona sin él y pide su nombre antes de que el botón actúe, las preguntas de partida bajo el cuadro de búsqueda vacío y el Print Spooler encontrado escribiendo parte de su nombre e iniciado.
Cuatro entradas seleccionadas y el plan para iniciarlas, un reinicio forzado que pide el nombre de un servicio que el equipo necesita, las preguntas bajo un cuadro de búsqueda vacío y el Print Spooler encontrado al escribir e iniciado.
La pantalla inicial: tres tarjetas de números sobre este equipo (servicios en ejecución, servicios de inicio automático que no arrancaron y servicios de inicio automático cuyo archivo ha desaparecido) y un botón Show the list.
Se abre con unas cifras sobre este equipo. Cada una es una pregunta: pulse una y la pregunta pasa al cuadro de búsqueda.
La lista de servicios con las tres listas sobre el cuadro de búsqueda, un cuadro de búsqueda vacío, los botones de filtro abiertos en filas para estado, tipo de inicio, firma, desacuerdos y desencadenadores, y la lista debajo.
Los botones de filtro escriben en el cuadro de búsqueda, de modo que lo que pulsó es una consulta que puede leer y editar.
Por qué existe

services.msc apenas ha cambiado desde Windows 2000

Los administradores pasan horas a la semana en él chocando con las mismas paredes.

  • Sin búsqueda. La única navegación es saltar a la primera letra de un nombre para mostrar.
  • Sin filtrado. No hay forma de preguntar muéstrame lo que está configurado para iniciarse automáticamente y no se está ejecutando.
  • Una fila cada vez. Reiniciar doce servicios son doce clics derechos y doce esperas.
  • "Deteniendo..." para siempre, sin más salida que el Administrador de tareas y adivinar el proceso.
  • Sin historial. Nadie sabe quién puso ese tipo de inicio en Deshabilitado, ni cuándo.
  • Datos ocultos. El proceso, los desencadenadores, los privilegios, el descriptor de seguridad, quién firmó el ejecutable: todo ello exige sc.exe de memoria, o el Registro.
  • Sin paridad en la línea de comandos. sc.exe tiene una sintaxis de los noventa, y el Get-Service que viene con Windows, en Windows PowerShell 5.1, no muestra la cuenta con la que se ejecuta un servicio, y mucho menos su descripción. PowerShell 7 muestra ambas y se instala por separado.

Las demás herramientas arreglan cada una una parte

Process Hacker y System Informer muestran una lista rica y pueden terminar un proceso a la fuerza, pero no tienen auditoría ni línea de comandos. sc.exe y PsService pueden hacerlo todo y no le dicen nada. Los cmdlets *-Service de PowerShell son programables y superficiales.

Nadie combina una lista en la que buscar, una vista previa antes de cada cambio y un registro de lo que cambió con el tiempo, y ese registro es la razón para conservar esta herramienta en un equipo pasada la primera tarde.

La comparación completa
Qué hace

Una ventana y una línea de comandos sobre un único motor

Preguntar, en lugar de desplazarse

start:auto !status:running significa lo que debería estar en marcha y no lo está. Un único lenguaje, en el cuadro de búsqueda y en bws list --query, con los campos sugeridos mientras escribe.

Mostrar el plan antes de que ocurra nada

Cada detención, inicio, reinicio y cambio de tipo de inicio se previsualiza con los servicios que arrastra consigo, y la vista previa es lo que se ejecuta.

Decirle qué se desvió y quién lo cambió

bws snapshot create congela el equipo en un archivo y bws snapshot diff dice qué cambió desde entonces, la configuración aparte de lo que simplemente se inició o se detuvo. bws history dice, a partir del registro del sistema, quién cambió un tipo de inicio y quién instaló un servicio. La ventana hace las tres cosas en Audit....

Arreglar un problema común con un clic

La pestaña Tools y bws tool fix reinician el servicio que hay detrás de una impresora que no imprime, un sonido que ha desaparecido o una búsqueda atascada, junto con lo que depende de él, mediante el mismo plan que todo lo demás.

Detener un servicio que no se detiene

Primero pide amablemente y termina el proceso solo si eso falla, nombrando cada otro servicio que vive en él.

Mostrar lo que services.msc oculta

Quién firmó el ejecutable y si Windows confía en él, desencadenadores, privilegios, el descriptor de seguridad, el proceso y su memoria. Como columnas y como criterios de búsqueda.

Avisar cuando no pudo leer algo

Un campo que no pudo leer se informa como no leído, nunca se muestra como vacío. Una instantánea tomada sin derechos de administrador lo dice dentro del propio archivo.

Encajar en los scripts

--json en cada comando, un código de salida para cada final y 5 cuando una comparación encuentra deriva.

Ejecutarse desde un solo archivo, sin conexión

Descomprima y ejecute, o instálelo para todo el equipo. Sin .NET que instalar, y nunca se conecta a Internet. Consultar no requiere derechos de administrador. GPL-3.0.

Lo que services.msc nunca hizo

Qué cambió desde ayer

Una instantánea es el equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento, el hash y el firmante de su archivo, sus dependencias, desencadenadores, privilegios y descriptor de seguridad. Es JSON con un campo por línea, así que cabe en un repositorio y git diff lo lee.

$ 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.
  • La configuración y el estado de ejecución se informan por separado. Dos instantáneas tomadas con un día de diferencia difieren en lo que casualmente está en marcha, y casi nada de eso es deriva: el tipo de inicio que cambió es la línea que hay que leer.
  • Lo que no pudo compararse se lista, no se oculta. Un campo que una instantánea nunca leyó sale como not compared, de modo que una comparación que dice nada cambió significa que nada cambió en lo que ambos lados podían ver.
  • --exit-code termina con 5 cuando la configuración difiere, de modo que una tarea programada puede tomar una instantánea en el despliegue y avisar a alguien la primera noche que el equipo se desvíe.
  • Dos equipos, dos archivos. Tome una instantánea en preproducción y otra en producción, y compárelas en cualquier parte.
Cómo funcionan las instantáneas y la deriva
Nada ocurre sin un plan

La vista previa es la ejecución

Toda operación que escribe construye primero un plan, y ese mismo plan es la vista previa, la cascada de servicios dependientes, el rechazo antes de que pulse nada, la línea de comandos que pide lo mismo y el camino de vuelta después.

$ 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.
  • Ejecútelo sin --dry-run y esos son los pasos, en ese orden, con las mismas razones al lado. No hay un segundo camino de código para la ejecución real.
  • Lo que cae con él está en el plan. Los servicios que dejarían de funcionar son pasos propios, y un plan que derribaría algo que el equipo necesita lo dice en sus advertencias.
  • Un rechazo llega antes del botón. Un controlador, un servicio para el que el administrador no acepta una detención, un proceso que el sistema protege: se rechazan al construir el plan, con la razón. La ventana atenúa el botón y dice por qué a su lado.
  • La detención forzada son dos pasos, y el segundo es condicional. bws kill pide al servicio que se detenga y termina su proceso solo si eso no funciona, nombrando cada otro servicio que vive en él.
Cuando un servicio no se detiene
Dos minutos con él

Desde la línea de comandos

El mismo motor que la ventana, para scripts, tareas programadas e integración continua. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.

bws list --query "start:auto !status:running"     lo que debería estar en marcha y no lo está
bws list --query "file:missing"                   servicios cuyo ejecutable ha desaparecido
bws list --query "signed:no peruser:no"           sin firmar, sin las copias por sesión
bws show Spooler                                  todo lo que se sabe de una entrada
bws stop Winmgmt --dry-run --dependents           lo que arrastraría detenerlo
bws kill Spooler --dry-run                        lo que se llevaría terminar su proceso
bws start-type Spooler manual --dry-run           lo que haría quitarlo del inicio automático
bws snapshot create before.json                   congelar el equipo antes de un cambio
bws snapshot diff before.json --live --exit-code  qué ha cambiado desde entonces, 5 si la configuración cambió
bws history Spooler                               quién cambió su tipo de inicio, y cuándo
bws tool fix printer --dry-run                    lo que haría la reparación rápida de una impresora atascada
Cada comando, opción y código de salida
Cómo conseguirlo

Descomprima y ejecute, o instale

Windows 10 1809 o Windows Server 2019 y posteriores, de 64 bits. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Cambiar cualquier cosa exige una sesión con privilegios elevados, y ambas mitades lo dicen en lugar de fallar en silencio: la ventana ofrece Restart as admin.

ArchivoQué es
BetterWindowsServices-win-x64.zipLa ventana, un ejecutable autónomo: sin .NET que instalar
bws-cli-win-x64.zipLa línea de comandos, un ejecutable autónomo, para scripts e integración continua
BetterWindowsServices-win-x64.msiEl instalador: ambos programas para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH

Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.