2015-12-07 9 views
9

Ho una pagina Web di lunga durata che ho bisogno di PowerShell per chiamare. Ho eseguito su base giornaliera dal task manager, con il seguente:Invoke-WebRequest impostato timeout

powershell -Command "Invoke-WebRequest https://www.example.com/longrunningtask" 

ma il timeout PowerShell si verifica prima che il sito risponde. C'è un modo per impostare il timeout su Invoke-WebRequest per essere più lungo rispetto agli standard di 60 secondi?

+0

Hai contato/misurato il tempo necessario per il timeout? Sono 60 secondi? 100 secondi? –

+0

@ MathiasR.Jessen 100 secondi – Josh

+0

Quindi suggerisco di vedere la mia risposta :) –

risposta

9

Ci dovrebbe essere un parametro -TimeoutSec a cui è possibile alimentare un valore intero quando si chiama il cmdlet Invoke-WebRequest.

Invoke-WebRequest https://www.example.com/longrunningtask -TimeoutSec 60 
+4

L'ho visto, ma questo è per la risoluzione DNS. Il DNS viene trovato immediatamente, ma la query impiega più tempo del tempo predefinito. C'è un settaggio PS globale da qualche parte che può essere aggiornato? – Josh

+1

Non c'è un'impostazione globale di per sé. Il timeout predefinito per la maggior parte dei cmdlet Web viene letto da [System.Net.HttpWebRequest.Timeout]. Si può sempre provare a creare una copia leggermente personalizzata della classe WebClient e modificare semplicemente la proprietà Timeout. http://stackoverflow.com/questions/1789627/how-to-change-the-timeout-on-a-net-webclient-object per vedere se funziona. –

0

Potreste essere in grado di aggirare il timeout impostando la ServicePointManager.MaxServicePointIdleTime proprietà statica. Il valore di default è 100000ms (100 secondi):

# Bump it up to 180 seconds (3 minutes) 
[System.Net.ServicePointManager]::MaxServicePointIdleTime = 180000 

# Now run your Invoke-WebRequest after making the change 

modifiche per ServicePointManager vale solo per il dominio applicazione corrente, e non persistere anche dopo la sessione (. vale a dire quello che devi fare ogni volta che si esegue lo script)

+0

Ho modificato l'istruzione in powershell -command "[System.Net.ServicePointManager] :: MaxServicePointIdleTime = 600000; invoke-webrequest http://www.example.com/longrunningtask" e continua a uccidere a 100 secondi. – Josh

+0

Non ha funzionato neanche per me :( –