Windows-Dienst remote neu starten mit sc.exe oder Powershell


    Tags: , ,

    Muss man eine Anwendung, die als Windows-Service läuft, neu starten, dann geht das relativ unkompliziert über die entsprechende GUI-Anwendung im Startmenü unter Verwaltung => Dienste (bzw. über services.msc im direkten Aufruf). Dies funktioniert auch remote, wenn man sich über das Menü Aktion mit einem anderen Computer verbindet. Will man diesen Vorgang jedoch auf mehreren Rechnern ausführen oder in einem Script anstoßen, dann hilft das Kommandozeilen-Tool sc.exe oder Powershell.

    Während unter älteren Windows-Versionen noch net start [service] und net stop [service] die gängigen Tools für das Starten und Beenden eines Diensten waren, steht inzwischen mit sc.exe ein mächtigeres Werkzeug zur Verfügung. Es bietet zahlreiche Möglichkeiten zur Steuerung von Windows-Services, darunter auch solche zum Auflisten, Starten, Fortsetzen und Beenden. Mit

    sc query|find /i "Service_name"

    kann man sich die Namen aller aktiven Dienste auf dem lokalen Rechner anzeigen lassen, die man dann mit den Schaltern start, pause, continue und stop steuern kann. Einen Befehl für den Neustart gibt es nicht, für diesen Zweck muss man stop und start kombinieren. Möchte man diese Befehle auf einem entfernten Rechner ausführen, dann gibt man dessen Namen als ersten Parameter in UNC-Syntax an:

    sc \\remotePC stop "Service_name"

    Cmdlet restart-service in Powershell

    Im Gegensatz zu sc.exe verfügt die Powershell über die Möglichkeit, einen Windows-Dienst mit einem einzigen Befehl neu zu starten, und zwar über das Cmdlet restart-service. Wenn man den Namen des Dienstes kennt, lautet der Aufruf für die lokale Maschine

    restart-service "Service_name"

    Das Cmdlet produziert eine Fehlermeldung, wenn man versucht, einen Service neu zu starten, von dem weitere Services abhängen. Man kann dann entweder mit dem Parameter -force einen Neustart erzwingen oder mit

    get-service "Service_name " -DependentServices

    nachsehen, welche Dienste vom besagten Service abhängen und ob man wirklich den Neustart um jeden Preis haben möchte.

    Dienst remote neu starten mit Powershell

    Um einen Windows-Dienst remote neu zu starten, muss man den Weg über invoke-command gehen:

    invoke-command {restart-service "Service_Name"} -computer Remote_Computer

    Dem Argument -computer kann man bei Bedarf eine Liste von Hostnamen übergeben, die durch Kommata voneinander getrennt sein müssen.

    Voraussetzung für alle Formen der Remote-Steuerung von Diensten ist natürlich, dass der aktuelle Benutzer ausreichende Rechte besitzt und dass WinRM am entfernten Rechner aktiviert ist.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links