LKBDE11337: Wie man einen Dienst von einem anderen System aus stoppt oder den Status prüft


Symptom

Sie müssen einen Dienst aus der Ferne steuern (starten, pausieren, stoppen, abfragen,...)

Cause

Dies ist eine der typischen alltäglichen administrativen Aufgaben für ein Serversystem (besonders die Abfrage)

Solution

Ein Windows Dienst kann mit dem "SC" Befehl bedient werden. SC ist ein Kommandozeilenwerkzeug für die Kommunikation mit der NT Dienstkontrolle eines entfernten Rechners. Die übliche Syntax des Befehls ist:

sc [kommando] [Dienstname] ...

Die Option hat die Form "\\ServerName"

Further help on commands can be obtained by typing: "sc [kommando]"

Verfügbare Kommandos:

query-----------Abfrage des Status eines Dienstes, oder Aufzählung der Status für Dienstarten.
queryex---------Abfrage des erweiterten Status eines Dienstes, oder Aufzählung der Status für Dienstarten.
start-----------Startet einen Dienst.
pause-----------Sendet einen PAUSE Kontrollbefehl an einen Dienst.
interrogate-----Sendet einen INTERROGATE ("Abfrage") Kontrollbefehl an einen Dienst.
continue--------Sendet einen CONTINUE ("Weitermachen") Kontrollbefehl an einen Dienst.
stop------------Sendet eine STOP Anfrage an einen Dienst.
config----------Ändert die Konfiguration eines Dienstes (dauerhaft).
description-----Ändert die Beschreibung eines Dienstes.
failure---------Ändert die möglichen Aktionen eines Dienstes im Fehlerfall.
qc--------------Abfrage der Konfigurationsinformationen eines Dienstes.
qdescription----Abfrage der Beschreibung eines Dienstes.
qfailure--------Abfrage der eingestellten Aktionen eines Dienstes im Fehlerfall.
delete----------Löscht einen Dienst (aus der Registry).
create----------Legt einen Dienst an (fügt ihn zur Registry hinzu).
control---------Sendet eine Kontrolle zu einem Dienst.
sdshow----------Zeigt den "security descriptor" eines Dienstes.
sdset-----------Setzt den "security descriptor" eines Dienstes.
GetDisplayName--Ruft den Anzeigenamen eines Dienstes ab.
GetKeyName------Ruft den "ServiceKeyName" eines Dienstes ab.
EnumDepend------Listet alle abhängigen Dienste auf.

Die folgenden Befehle erfordern keinen Dienstnamen:

sc

boot------------(ok | bad) zeigt an, ob der letzte Startvorgang als "last-known-good" Boot Konfiguration gespeichert werden soll.
Lock------------Sperrung der Dienste Datenbank
QueryLock-------Abfrage des Sperrstatus für die SCManager Datenbank

Hier sind ein paar Beispiele, um den Enteo Dienst auf Server "\\lubbysrv" zu stoppen und den Status hinterher abzufragen:

sc \\lubbysrv stop "ersupext"
sc \\lubbysrv stop "esiCore"
sc \\lubbysrv query "esicore"

Der Status könnte auch so überprüft werden:

sc \\lubbysrv query state= inactive |find /i "core"

Nur mit

sc \\lubbysrv query

bekommt man dagegen alle laufenden Dienste des fernen Systems.

Hier bekommt nam alle angezeigt, auch die inaktiven Dienste:

sc \\lubbysrv query state= all

Disclaimer:

The information provided in this document is intended for your information only. Lubby makes no claims to the validity of this information. Use of this information is at own risk!

About the Author

Author: Wim Peeters - Keskon GmbH & Co. KG

Wim Peeters is electronics engineer with an additional master in IT and over 30 years of experience, including time spent in support, development, consulting, training and database administration. Wim has worked with SQL Server since version 6.5. He has developed in C/C++, Java and C# on Windows and Linux. He writes knowledge base articles to solve IT problems and publishes them on the Lubby Knowledge Platform.