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-Key: 2090855687

Url: https://administrator.de/contentid/2090855687

Printed on: April 26, 2024 at 14:04 o'clock

Member: NordicMike
NordicMike Mar 08, 2022 at 06:00:39 (UTC)
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 ;)
Member: SlainteMhath
SlainteMhath Mar 08, 2022 at 06:17:34 (UTC)
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
Member: NordicMike
NordicMike Mar 08, 2022 at 06:32:38 (UTC)
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".
Member: TK1987
Solution TK1987 Mar 08, 2022 updated at 06:38:33 (UTC)
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
Member: TK1987
TK1987 Mar 08, 2022 updated at 06:57:15 (UTC)
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
Member: newbi2009
newbi2009 Mar 08, 2022 at 11:15:49 (UTC)
Goto Top
vielen Dank für die schnelle Hilfe
Member: TomTomBon
TomTomBon Mar 08, 2022 at 13:30:39 (UTC)
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%
?
Member: NordicMike
NordicMike Mar 08, 2022 at 13:44:26 (UTC)
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.