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
| Pregunta | Con lo que hay en el equipo | Aquí |
|---|---|---|
| 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.exehace 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 createysc delete. No aquí, a propósito. - Ya está metido de lleno en una canalización de PowerShell.
bws list --jsonvuelve como objetos conConvertFrom-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.