Reinicio de servicios comodín

21

Actualmente, hemos configurado un archivo .BAT que enumera todos los servicios para iniciarlos / detenerlos, por ejemplo.

SC start SERVICE
SC start SERVICE

SC stop SERVICE
SC stop SERVICE

Agregamos nuevos servicios todo el tiempo y la lista crece y es difícil mantener el archivo por lotes.

¿Es posible usar una WILDCARD como 'SC start SERVICE *' o algo así?

Edward Tung
fuente
1
¿Qué versión de windows?
Endoro

Respuestas:

17

Puede usar una wmicsintaxis comodín SQL-ish.

Desde una cmdconsola:

wmic service where "name like 'SERVICE%'" call startservice

De un .batguión:

wmic service where "name like 'SERVICE%%'" call startservice

Verbos disponibles incluyen startservice, stopservice, pauseservice, resumeservice, y otros. Haz wmic service call /?para más información.

rojo
fuente
1
El lenguaje de consulta se llama WQL, por cierto. Es un subconjunto de SQL.
Bob
@Bob - Oh. Ya aprendes algo nuevo todos los días. :>
rojo
Solo quería agregar una cosa más. Me encontré con un error en el que no se reconoció el nombre del servicio. Resulta que un servicio tiene un Nombre de servicio y un Nombre para mostrar. Se debe usar el nombre del servicio, no el nombre para mostrar. Puede encontrar el nombre del servicio consc query
jdramer
13

Fácil, a través de Powershell:

Get-service SERVICE* | stop-service -force

Get-service SERVICE* | start-service
Gotxi
fuente
Voté este porque se ejecuta MUCHO más rápido que wmic. En mi máquina, se necesitan aproximadamente 2 milisegundos para obtener una lista de servicios de esta manera. Toma alrededor de 13000 milisegundos usando wmic.
arjabbar
¿Cómo combino estos dos comandos de una sola vez?
Raja Anbazhagan
0

si quieres un comando de una línea,

Puede usar el Cmdlet Restart-Service que está preconstruido en powershell.

Para usar Restart-Service, simplemente llame al cmdlet seguido del nombre del servicio:

Restart-Service mysql57

Para reiniciar múltiples servicios solo especifique el nombre de cada servicio, separados por comas:

Restart-Service mysql57,apache

Si lo prefiere, agregue el parámetro -displayname y especifique el nombre para mostrar del servicio (el nombre que se muestra en el complemento Servicios) en su lugar:

Restart-Service -displayname "Mysql 5.7 server"

Este Cmdlet también acepta la coincidencia de comodines. Para reiniciar todos los servicios que comienzan con "mysql":

Restart-Service mysql*
Raja Anbazhagan
fuente