stop-service Cmdlet-Timeout möglich?

8

Wir verwenden das Stop-Service-Cmdlet, um einige Dienste in unseren Boxen zu beenden. Meistens funktioniert es super, allerdings haben wir ein oder zwei Dienste (wer nicht?), Die gelegentlich nicht nett spielen.

In diesem Fall bleibt einer der fraglichen Dienste im stoppenden Zustand und das Cmdlet setzt dies immer wieder auf die Konsole:

%Vor%

Schließlich müssen wir den Dienst im Task-Manager beenden, und unser Skript wird dann fortgesetzt.

Gibt es eine Möglichkeit, das Stop-Service-Cmdlet nach einem bestimmten Zeitpunkt aufzugeben oder abzubrechen? Ich denke, wir können nachher überprüfen, und wenn der Dienst noch ausgeführt wird, verwenden Sie das Cmdlet Kill-Process, um einen endgültigen Hack bereitzustellen.

    
larryq 21.09.2012, 16:09
quelle

3 Antworten

3
___ answer44165673 ___

Wenn Sie Powershell 5.1 haben, haben Sie auch:

%Vor%

Ссылка

Aber die Antwort von @JamesQMurphy sieht auch gut aus, wenn Sie nicht die Version 5.1 von Powershell haben.

    
___ tag123powershell ___ PowerShell ist ein Befehlszeilen- und Skriptprogramm für Windows. Verwenden Sie dieses Tag nur für Fragen zum Schreiben und Ausführen von PowerShell-Skripts. Programmierungsfragen speziell für die plattformübergreifende Version PowerShell Core (Windows, macOS, Linux) sollte mit [powershell-core] gekennzeichnet werden. Fragen zur Systemverwaltung sollten auf SuperUser gestellt werden. ___ antwort12534503 ___

Es gibt keine Timeout-Option für Stop-Service. Wenn jedoch abhängige Services vorhanden sind, müssen Sie möglicherweise -force verwenden.

Dienste können einen Wartehinweis (der ein Zeitlimit angibt) beim Start definieren, aber das Zeitlimit wird vom Dienst gesteuert. Alle Dienststeuerungsanforderungen (Start, Stopp, Pause, Fortsetzen) durchlaufen den Dienststeuerungs-Manager (SCM) und berücksichtigen den Wartehinweis für jeden Dienst. Wenn der Wartehinweis überschritten wird, schlägt die Operation fehl und es wird ein Fehler zurückgegeben.

Sie können den Befehl invoke verwenden, um Stop-Service als Job auszuführen und regelmäßig zu überprüfen. Wenn es nicht abgeschlossen wurde, können Sie den Prozess mit Stop-Process beenden und fortfahren.

    
___ tag123windowsservices ___ Windows-Dienste sind Hintergrunddienstprozesse, die vom Dienststeuerungs-Manager auf Windows NT-basierten Betriebssystemen ausgeführt werden, ähnlich wie Daemons oder UNIX-Dienste. ___ tag123cmdlet ___ Ein Cmdlet ist ein einfaches Windows-Skript [tag: PowerShell], das eine einzelne Funktion ausführt. ___ qstntxt ___

Wir verwenden das Stop-Service-Cmdlet, um einige Dienste in unseren Boxen zu beenden. Meistens funktioniert es super, allerdings haben wir ein oder zwei Dienste (wer nicht?), Die gelegentlich nicht nett spielen.

In diesem Fall bleibt einer der fraglichen Dienste im stoppenden Zustand und das Cmdlet setzt dies immer wieder auf die Konsole:

%Vor%

Schließlich müssen wir den Dienst im Task-Manager beenden, und unser Skript wird dann fortgesetzt.

Gibt es eine Möglichkeit, das Stop-Service-Cmdlet nach einem bestimmten Zeitpunkt aufzugeben oder abzubrechen? Ich denke, wir können nachher überprüfen, und wenn der Dienst noch ausgeführt wird, verwenden Sie das Cmdlet Kill-Process, um einen endgültigen Hack bereitzustellen.

    
___ qstnhdr ___ stop-service Cmdlet-Timeout möglich? ___
Steven Murawski 21.09.2012, 16:33
quelle
7
___ answer44165673 ___

Wenn Sie Powershell 5.1 haben, haben Sie auch:

%Vor%

Ссылка

Aber die Antwort von @JamesQMurphy sieht auch gut aus, wenn Sie nicht die Version 5.1 von Powershell haben.

    
___ tag123powershell ___ PowerShell ist ein Befehlszeilen- und Skriptprogramm für Windows. Verwenden Sie dieses Tag nur für Fragen zum Schreiben und Ausführen von PowerShell-Skripts. Programmierungsfragen speziell für die plattformübergreifende Version PowerShell Core (Windows, macOS, Linux) sollte mit [powershell-core] gekennzeichnet werden. Fragen zur Systemverwaltung sollten auf SuperUser gestellt werden. ___ antwort12534503 ___

Es gibt keine Timeout-Option für Stop-Service. Wenn jedoch abhängige Services vorhanden sind, müssen Sie möglicherweise -force verwenden.

Dienste können einen Wartehinweis (der ein Zeitlimit angibt) beim Start definieren, aber das Zeitlimit wird vom Dienst gesteuert. Alle Dienststeuerungsanforderungen (Start, Stopp, Pause, Fortsetzen) durchlaufen den Dienststeuerungs-Manager (SCM) und berücksichtigen den Wartehinweis für jeden Dienst. Wenn der Wartehinweis überschritten wird, schlägt die Operation fehl und es wird ein Fehler zurückgegeben.

Sie können den Befehl invoke verwenden, um Stop-Service als Job auszuführen und regelmäßig zu überprüfen. Wenn es nicht abgeschlossen wurde, können Sie den Prozess mit Stop-Process beenden und fortfahren.

    
___ tag123windowsservices ___ Windows-Dienste sind Hintergrunddienstprozesse, die vom Dienststeuerungs-Manager auf Windows NT-basierten Betriebssystemen ausgeführt werden, ähnlich wie Daemons oder UNIX-Dienste. ___ tag123cmdlet ___ Ein Cmdlet ist ein einfaches Windows-Skript [tag: PowerShell], das eine einzelne Funktion ausführt. ___ qstntxt ___

Wir verwenden das Stop-Service-Cmdlet, um einige Dienste in unseren Boxen zu beenden. Meistens funktioniert es super, allerdings haben wir ein oder zwei Dienste (wer nicht?), Die gelegentlich nicht nett spielen.

In diesem Fall bleibt einer der fraglichen Dienste im stoppenden Zustand und das Cmdlet setzt dies immer wieder auf die Konsole:

%Vor%

Schließlich müssen wir den Dienst im Task-Manager beenden, und unser Skript wird dann fortgesetzt.

Gibt es eine Möglichkeit, das Stop-Service-Cmdlet nach einem bestimmten Zeitpunkt aufzugeben oder abzubrechen? Ich denke, wir können nachher überprüfen, und wenn der Dienst noch ausgeführt wird, verwenden Sie das Cmdlet Kill-Process, um einen endgültigen Hack bereitzustellen.

    
___ qstnhdr ___ stop-service Cmdlet-Timeout möglich? ___
JamesQMurphy 08.03.2016 15:44
quelle
0

Wenn Sie Powershell 5.1 haben, haben Sie auch:

%Vor%

Ссылка

Aber die Antwort von @JamesQMurphy sieht auch gut aus, wenn Sie nicht die Version 5.1 von Powershell haben.

    
Igor Beaufils 24.05.2017 18:06
quelle