Kuddel071089 9 Geschrieben 19. Oktober 2020 Autor Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 07:52 schrieb testperson: Hi, wäre es nicht besser zu klären, warum manche Server "in ein Timeout laufen" und dann die Ursache zu beheben? Wenn die Server während der Abfrage booten oder "geplant" nicht erreichbar sind, würde ich vorher einfach mit Test-(Net)Connection auf Erreichbarkeit prüfen. BTW.: Je nachdem an welcher Stelle das Problem auftritt, wäre ein Error-Handling noch ein Ansatz. Dann könntest du im Bericht direkt noch auf die fehlerhaften Server hinweisen. Gruß Jan Mehr Einen Check einzubauen, dass Server XY nicht ebgefragt werden kann, wäre natürlich noch besser. Dann wüsste ich, dass ich mir den Server anschauen muss und würde die Abfrage nach den ausstehenden Updates gar nicht erst starten. Jetzt die Frage ? Wie baue ich meinen Befehl so um, dass er nur ausgeführt wird, wenn ein sinnvolles ergebnis zurückgeliefert wird. Test-Connection ist bereits in verwendung Zitieren
BOfH_666 585 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 08:02 schrieb Kuddel071089: Test-Connection ist bereits in verwendung Mehr .... dann ist scheinbar die Erreichbarkeit der Server nicht das Problem ... Zitieren
Kuddel071089 9 Geschrieben 19. Oktober 2020 Autor Melden Geschrieben 19. Oktober 2020 Dann werde ich mal probieren die Abfrage im Skript als Job (start-job) zu starten und dann mit wait-job zu arbeiten Zitieren
Dukel 465 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Mit Wait-Job hast du keinen Timeout. Zitieren
BOfH_666 585 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 08:17 schrieb Kuddel071089: Dann werde ich mal probieren die Abfrage im Skript als Job (start-job) zu starten und dann mit wait-job zu arbeiten Mehr Ich würde in der Schleife eher mit Get-Job arbeiten und den Status auswerten. Und wenn er in der von Dir definierten Zeit nicht abgeschlossen wird, kannst Du die Schleife abbrechen/beenden. Wait-Job blockiert die Konsole ja so lange bis entweder der Job oder die Jobs abgeschlossen sind oder bis der Timeout abgelaufen ist. Zitieren
Kuddel071089 9 Geschrieben 19. Oktober 2020 Autor Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 08:21 schrieb BOfH_666: Ich würde in der Schleife eher mit Get-Job arbeiten und den Status auswerten. Und wenn er in der von Dir definierten Zeit nicht abgeschlossen wird, kannst Du die Schleife abbrechen/beenden. Wait-Job blockiert die Konsole ja so lange bis entweder der Job oder die Jobs abgeschlossen sind oder bis der Timeout abgelaufen ist. Mehr ich merke, in start-job muss ich mich noch ein wenig einlesen ^^ Zitieren
BOfH_666 585 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 08:20 schrieb Dukel: Mit Wait-Job hast du keinen Timeout. Mehr Hmmmm ... kann man so nicht sagen, glaube ich .... siehe Doku: Wait-Job .... der Parameter heißt sogar so Zitieren
Sunny61 828 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 07:59 schrieb BOfH_666: Nee ... so meinte er das nicht. ... es ging mir - wie auch Dukel vorschlug - um PS-Jobs. Mehr Danke für die Korrektur. ;) Am 19.10.2020 um 07:48 schrieb Kuddel071089: in dem skript werden dann aus der AD alle Windows Server abgefragt. Stand heute: 580 Server Mehr Wie wäre es das ganze aufzuteilen? Entweder immer 10er oder 50igerweise die Server nehmen und abfragen, oder, falls die Server in OUs abgelegt sind, immer nur OUs abfragen und den nächsten Job erst starten, wenn der vorherige abgeschlossen ist. Zitieren
Dukel 465 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Stimmt. Man kann im Script warten oder mit einem Timeout bei Get-Job warten. Letzteres wäre das Script fertig, wenn alle durch sind und nicht erst wenn das Script fertig ist. Zitieren
testperson 1.789 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 (bearbeitet) Am 19.10.2020 um 08:02 schrieb Kuddel071089: Test-Connection ist bereits in verwendung Mehr Auf was testest du denn die Verbindung bzw. über welches Protokoll verbindest du dich denn später mit dem Ziel-Server? Evtl. solltest du dann auch bspw. mit Test-NetConnection -ComputerName XYZ -CommonTCPPort WINRM die Verbindung über das entsprechende Protokoll testen. Wenn die Verbindung steht und später in deinem Scriptblock etwas in einen Timeout läuft, wäre dort ggfs. ein Error-Handling (Try-Catch) hilfreich. bearbeitet 19. Oktober 2020 von testperson Zitieren
BOfH_666 585 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Am 19.10.2020 um 08:26 schrieb Sunny61: Entweder immer 10er oder 50igerweise die Server nehmen und abfragen,... Mehr Ja eben .... um wieviele Server geht es eigentlich? Meine Empfehlung wär ja dann "ein Job pro Server". Zitieren
Kuddel071089 9 Geschrieben 19. Oktober 2020 Autor Melden Geschrieben 19. Oktober 2020 Der erste Test läuft #Abfrage der austehenden Updates $job = Start-Job -ScriptBlock { Invoke-Command -Computer $using:servername -ScriptBlock { $computer = $args[0] # Abfrage mit COM-Objekt $Searcher = New-Object -ComObject Microsoft.Update.Searcher $Criteria = "IsInstalled=0 and Type='Software'" $SearchResult = $Searcher.Search($Criteria).Updates $SearchResult.Count } } #Timeout von 5 Minuten Wait-Job $job -Timeout 300 | Out-Null $updates = Receive-Job -Job $job Zitieren
Dukel 465 Geschrieben 19. Oktober 2020 Melden Geschrieben 19. Oktober 2020 Kleiner Tipp. Invoke-Command kennt -AsJob. Zitieren
Kuddel071089 9 Geschrieben 19. Oktober 2020 Autor Melden Geschrieben 19. Oktober 2020 (bearbeitet) Am 19.10.2020 um 09:13 schrieb Dukel: Kleiner Tipp. Invoke-Command kennt -AsJob. Mehr dann müsste das so aussehen ? #Abfrage der austehenden Updates $job = Invoke-Command -Computer $using:servername -ScriptBlock { $computer = $args[0] # Abfrage mit COM-Objekt $Searcher = New-Object -ComObject Microsoft.Update.Searcher $Criteria = "IsInstalled=0 and Type='Software'" $SearchResult = $Searcher.Search($Criteria).Updates $SearchResult.Count } -AsJob #Timeout von 5 Minuten Wait-Job $job -Timeout 300 | Out-Null $updates = Receive-Job -Job $job bearbeitet 19. Oktober 2020 von Kuddel071089 Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.