Guía

sc.exe, Get-Service y esto

Ambos ya están en el equipo, y ambos seguirán siendo útiles. Esta página trata de dónde se detienen, y dice con claridad dónde siguen siendo la mejor respuesta.

Dónde se detiene cada uno

sc.exe

Alcanza casi todo lo que sabe el administrador de control de servicios, y no le dice nada sobre cómo preguntar. La sintaxis es de los noventa: sc config X start= auto, donde el espacio tras el signo igual es obligatorio y su ausencia es un fallo silencioso al hacer lo que usted quería.

Responde sobre una entrada cada vez. No hay filtrado, ni una salida que un script pueda analizar sin escribir un analizador, ni vista previa: sc stop o funciona o devuelve un número.

Get-Service y los cmdlets *-Service

Objetos de verdad, una canalización y una vista superficial. En Windows PowerShell 5.1, el que viene con Windows, Get-Service no muestra la cuenta con la que se ejecuta un servicio ni su descripción. PowerShell 7 muestra ambas, y también la ruta de lanzamiento, y se instala por separado.

Stop-Service -Force significa "aunque algo dependa de él": detiene a los dependientes, y se lo dice después y no antes.

Las mismas preguntas, de tres maneras

PreguntaCon lo que hay en el equipoAquí
Qué debería estar en marcha y no lo está Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } bws list --query "start:auto !status:running"
Qué servicios tienen un ejecutable sin firmar Leer cada ruta de lanzamiento, resolverla, llamar a Get-AuthenticodeSignature en cada una: un script, no un comando bws list --query "signed:no"
Qué arrastraría detener este sc enumdepend X, y luego leer la lista y decidir usted mismo bws stop X --dry-run --dependents, que es el plan que se ejecutaría
Qué cambió desde la semana pasada Nada, salvo que haya escrito usted el recolector bws snapshot diff before.json --live
Quién cambió el tipo de inicio, y cuándo Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, y luego leer el mensaje de cada evento bws history Spooler, cuya primera línea dice hasta dónde llega el registro
Salida legible por máquina Objetos de PowerShell, texto de sc.exe --json en cada comando, por la salida estándar, con las advertencias por el error estándar

Cuando esta herramienta discrepa de sc.exe sobre un servicio, es un error de esta. Parte del conjunto de pruebas ejecuta ambos contra el equipo en el que está y los compara entrada por entrada, y una diferencia entre los dos es lo más útil que puede poner en una incidencia.

Cuándo seguir usando lo que ya tiene

  • Está en un equipo que tocará una sola vez. Ambos ya están ahí y nada tiene que pasar una política.
  • Necesita cambiar la cuenta, la ruta de lanzamiento o las acciones de recuperación. sc.exe hace las tres cosas. Esta herramienta muestra la cuenta y la ruta de lanzamiento y no cambia ninguna, y lee las acciones de recuperación solo para avisar antes de terminar un proceso.
  • Necesita crear o eliminar un servicio. sc create y sc delete. No aquí, a propósito.
  • Ya está metido de lleno en una canalización de PowerShell. bws list --json vuelve como objetos con ConvertFrom-Json, así que se une a la canalización en lugar de sustituirla.

Juntos, en lugar de en su lugar

La herramienta que responde a qué le pasa a este equipo y las herramientas que cambian un ajuste no son la misma herramienta. Haga la pregunta aquí, lea el plan aquí y use lo que prefiera para ejecutarlo: el plan imprime la línea de comandos que pide lo mismo, y esa línea está hecha para copiarse.