Ich habe ein Batch-Skript, das wie folgt aussieht:
sc stop myservice
sc start myservice
Es tritt ein Fehler auf, weil sc nicht wartet, bis der Dienst beendet wird. Wie starte ich einen Dienst mit einem Skript neu?
Ich habe ein Batch-Skript, das wie folgt aussieht:
sc stop myservice
sc start myservice
Es tritt ein Fehler auf, weil sc nicht wartet, bis der Dienst beendet wird. Wie starte ich einen Dienst mit einem Skript neu?
Antworten:
Das Poster möchte sicherstellen, dass der Dienst beendet wird, bevor versucht wird, ihn neu zu starten. Sie können eine Schleife an der Ausgabe von "sc query" verwenden, um Folgendes zu tun:
quelle
Möglicherweise fehlt etwas, aber ich benutze dies die ganze Zeit:
oder kürzer:
quelle
Ganz einfach mit Powershell:
Noch besser, wenn Sie Anzeigenamen verwenden:
Get-Help Restart-Service
für mehrquelle
Wenn es nur zum Neustarten des Dienstes dient, können Sie verwenden
Wenn Sie jedoch auf die Optionen von sc zugreifen möchten, können Sie den Befehl start / wait verwenden
Diese Technik ist eine allgemeinere Lösung, die auf jeden Befehl angewendet werden kann.
quelle
sc stop myservice
Sendet einfach den Befehl stop und kehrt zurück, bevor der Dienst beendet wird. Es hilft nicht, sc mit start / b aufzurufen.Um einen leisen Neustart eines Dienstes zu erhalten, bei dem zum Beenden aufgefordert wird (z. B. als Serverdienst), können Sie am Ende des Stoppbefehls / y hinzufügen .
Es wäre hilfreich für die automatische Skriptausführung.
quelle
Wenn Sie einen fehlgeschlagenen Dienst neu starten möchten, müssen Sie kein Skript ausführen. Klicken Sie im MMC-Snap-In für Dienste mit der rechten Maustaste auf einen Dienst, wählen Sie Eigenschaften aus und klicken Sie auf die Registerkarte Wiederherstellung. Hier können Sie festlegen, welche Aktionen Sie ausführen möchten, wenn der Dienst beendet wird. Es steht eine Menge Flexibilität zur Verfügung. Sie benötigen ein Skript, wenn Sie versuchen, den Dienst zu beenden, etwas zu tun und dann das Skript zu starten, die Batch-Datei mit einem Vorwort zu versehen
net stop "myserviceshortname"
und mit zu beendennet start "myserviceshortname"
In vbscipt ist es ein bisschen mehr Code, um einen Dienst und seine abhängigen Elemente zu stoppen:
Hier wird ein Dienst gestartet und alles, wovon es abhängt (dies sollte vertraut sein)
quelle
Sie können die folgenden Befehle verwenden:
quelle