Jump to content

Timeout für Update Abfrage


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

vor 8 Minuten 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

 

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

 

Link zu diesem Kommentar
Gerade eben schrieb Kuddel071089:

Dann werde ich mal probieren die Abfrage im Skript als Job (start-job) zu starten und dann mit wait-job zu arbeiten

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.

Link zu diesem Kommentar
Gerade eben 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.

ich merke, in start-job muss ich mich noch ein wenig einlesen ^^

Link zu diesem Kommentar
vor 26 Minuten schrieb BOfH_666:

Nee ... so meinte er das nicht. ;-)  ... es ging mir - wie auch Dukel vorschlug - um PS-Jobs.

Danke für die Korrektur. ;)

vor 37 Minuten schrieb Kuddel071089:

in dem skript werden dann aus der AD alle Windows Server abgefragt. Stand heute: 580 Server

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.

Link zu diesem Kommentar
vor 27 Minuten schrieb Kuddel071089:

Test-Connection ist bereits in verwendung

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 von testperson
Link zu diesem Kommentar

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

 

Link zu diesem Kommentar
vor 13 Minuten schrieb Dukel:

Kleiner Tipp. Invoke-Command kennt -AsJob.

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 von Kuddel071089
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...