Wildcard Services neu starten

21

Derzeit haben wir eine .BAT-Datei eingerichtet, die alle Dienste auflistet, um sie zu starten / stoppen, z.

SC start SERVICE
SC start SERVICE

SC stop SERVICE
SC stop SERVICE

Wir fügen ständig neue Dienste hinzu, und die Liste wächst und es ist schwierig, die Batch-Datei zu pflegen.

Kann ich eine WILDCARD wie 'SC start SERVICE *' oder so benutzen?

Edward Tung
quelle
1
Welche Windows-Version?
Endoro

Antworten:

17

Sie können eine wmicSQL-ish-Platzhaltersyntax verwenden.

Von einer cmdKonsole aus:

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

Aus einem .batSkript:

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

Erhältlich Verben sind startservice, stopservice, pauseservice, resumeservice, und andere. Tun Sie wmic service call /?für weitere Informationen.

Rojo
quelle
1
Die Abfragesprache heißt WQL, BTW. Es ist eine Teilmenge von SQL.
Bob
@ Bob - Oh. Sie lernen jeden Tag etwas Neues. :>
Rojo
Ich wollte nur noch eine Sache hinzufügen. Ich bin auf einen Fehler gestoßen, bei dem der Dienstname nicht erkannt wurde. Es stellte sich heraus, dass ein Dienst einen Dienstnamen und einen Anzeigenamen hat. Der Dienstname sollte verwendet werden, nicht der Anzeigename. Sie finden den sc query
Servicenamen
13

Einfach über Powershell:

Get-service SERVICE* | stop-service -force

Get-service SERVICE* | start-service
Gotxi
quelle
Ich habe dieses Video hochgestuft, weil es viel schneller läuft als WMIC. Auf meinem Computer dauert es ungefähr 2 Millisekunden, um eine Liste der Dienste auf diese Weise abzurufen. Mit wmic dauert es ungefähr 13000 Millisekunden.
Arjabbar
Wie kombiniere ich diese beiden Befehle in einem Durchgang?
Raja Anbazhagan
0

Wenn Sie einen einzeiligen Befehl möchten,

Sie können das in Powershell vorgefertigte Cmdlet " Restart-Service" verwenden.

Um Restart-Service zu verwenden, rufen Sie einfach das Cmdlet gefolgt vom Dienstnamen auf:

Restart-Service mysql57

Um mehrere Dienste neu zu starten, geben Sie einfach den Namen jedes Dienstes durch Kommas getrennt an:

Restart-Service mysql57,apache

Wenn Sie möchten, fügen Sie stattdessen den Parameter -displayname hinzu und geben Sie den Anzeigenamen des Dienstes an (den Namen, der im Dienste-Snap-In angezeigt wird):

Restart-Service -displayname "Mysql 5.7 server"

Dieses Cmdlet akzeptiert auch das Anpassen von Platzhaltern. So starten Sie alle Dienste neu, die mit "mysql" beginnen:

Restart-Service mysql*
Raja Anbazhagan
quelle