newbi2009
Goto Top

Powershell: Script "Pause" bis Dienste auf Remote Server abgerufen wurden

Hallo zusammen,

ich habe ein Script gebaut, indem ich mit
Get-Service -Computername Server1 -Name "Cert*"  

den Status der betroffenen Dienste abfrage.
Jetzt dauert es natürlich seine Zeit, bis die Information "ankommt" (Beim ersten Abruf auf jedem Server bis 15 Sekunden).
Leider läuft das Script in der Zwischenzeit weiter, so dass es das Ergebnis nicht, bzw. nicht an der richtigen Stelle anzeigt.

Wie bewege ich das Script nach der Abfrage solange zu warten, bis das Ergebnis ausgegeben wird?

Vielen Dank und Gruß
Holger

Content-ID: 2090855687

Url: https://administrator.de/forum/powershell-script-pause-bis-dienste-auf-remote-server-abgerufen-wurden-2090855687.html

Ausgedruckt am: 06.03.2025 um 18:03 Uhr

NordicMike
NordicMike 08.03.2022 um 07:00:39 Uhr
Goto Top
Du musst eine if oder while schleife bauen und immer wieder abfragen, bis das richtige Ergebnis ausgegeben wird. Dabei zählst du einen Zähler hoch. Sollte das Ergebnis nach z.B. 20 Abfragen (die jeweils eine 1 Sekunde Pause beinhalten) immer noch negativ sein, läuft der Dienst wirklich nicht.

Den Rest erfährst du über Google, das dir auch treffer hier im Forum zeigen wird ;)
SlainteMhath
SlainteMhath 08.03.2022 um 07:17:34 Uhr
Goto Top
Moin,

ich verstehe deine Frage nicht ganz. Der Aufruf von "Get-Service" blockiert doch die Scriptausführung bis das Ergebnis "da" ist oder der Timeout zuschlägt.

Am besten du postest mal den relevanten Code

lg,
Slainte
NordicMike
NordicMike 08.03.2022 um 07:32:38 Uhr
Goto Top
Der Aufruf von "Get-Service" blockiert doch die Scriptausführung bis das Ergebnis "da" ist oder der Timeout zuschlägt.
Get-Service holt nur den Status ab und antwortet sofort mit "Dienst läuft" oder "Dienst läuft nicht".
TK1987
Lösung TK1987 08.03.2022 aktualisiert um 07:38:33 Uhr
Goto Top
Moin Holger,

das geht mit Out-Host, Out-Default und Out-Null, letzteres natürlich nur, um die Ausgabe zu löschen.
Get-Service -Computername Server1 -Name "Cert*" | Out-Default  

Gruß Thomas
TK1987
TK1987 08.03.2022 aktualisiert um 07:57:15 Uhr
Goto Top
Moin,

Zitat von @SlainteMhath:
ich verstehe deine Frage nicht ganz. Der Aufruf von "Get-Service" blockiert doch die Scriptausführung bis das Ergebnis "da" ist oder der Timeout zuschlägt.
Nein, dem ist nicht so. Merkt man insbesondere, wenn man von mehreren Clients Werte abfragt, dass diese nicht immer in der Reihenfolge angezeigt werden, in der man sie abgefragt hat.

Gruß Thomas
newbi2009
newbi2009 08.03.2022 um 12:15:49 Uhr
Goto Top
vielen Dank für die schnelle Hilfe
TomTomBon
TomTomBon 08.03.2022 um 14:30:39 Uhr
Goto Top
Moin

Kleine Nebenfrage.
Wäre es nicht ganz Oldschool-mäßig möglich, das entsprechend in eine csv zu schreiben?

Also:
Get-Service -Computername Server1 -Name "Cert*" >> %Temp%\([System.DateTime]::UtcNow).tostring("u")-Server1.Status-Service.csv  
explorer %temp%
?
NordicMike
NordicMike 08.03.2022 um 14:44:26 Uhr
Goto Top
Wäre es nicht ganz Oldschool-mäßig möglich, das entsprechend in eine csv zu schreiben?
Das gleiche Problem, der Service hat noch nicht gestartet und in der CSV steht dann: nicht gestartet.

Eigentlich braucht man sowas in Zeiten von Zabbix und PRTG überhaupt nicht mehr.