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!

Recommended Posts

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 to post
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 to post
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 to post
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 to post
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.

Edited by testperson
Link to post

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 to post
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

 

Edited by Kuddel071089
Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...