2015-12-07 24 views
9

Mam długotrwałą stronę internetową, do której potrzebuję PowerShell. Uruchamiam go codziennie od menedżera zadań, a następnie:Invoke-WebRequest ustawiony limit czasu

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

, ale limit czasu dla PowerShell występuje, zanim strona zareaguje. Czy jest jakiś sposób, aby ustawić limit czasu na Invoke-WebRequest, aby był dłuższy niż standardowe 60 sekund?

+0

Czy policzyłeś/zmierzyłeś czas potrzebny na przekroczenie limitu czasu? Czy to 60 sekund? 100 sekund? –

+0

@ MathiasR.Jessen 100 sekund – Josh

+0

Następnie proponuję zobaczyć moją odpowiedź :) –

Odpowiedz

9

Powinien istnieć parametr -TimeoutSec, do którego można podać wartość całkowitą, podczas wywoływania cmdletu Invoke-WebRequest.

+4

Widziałem, ale to jest dla rozdzielczości DNS. DNS znajduje się natychmiast, ale zapytanie trwa dłużej niż domyślny czas. Czy istnieje globalne ustawienie PS, które można zaktualizować? – Josh

+1

Nie ma ustawienia globalnego jako takiego. Domyślny limit czasu dla większości poleceń cmdlet jest odczytywany z [System.Net.HttpWebRequest.Timeout]. Zawsze można spróbować wykonać nieznacznie dostosowaną kopię klasy WebClient i zmienić właściwość Timeout. http://stackoverflow.com/questions/1789627/how-to-change-the-timeout-on-a-net-webclient-object, aby sprawdzić, czy to działa. –

0

Być może uda ci się obejść limit czasu, ustawiając nieruchomą właściwość ServicePointManager.MaxServicePointIdleTime. Wartość domyślna to 100000ms (100 sekund):

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

# Now run your Invoke-WebRequest after making the change 

Zmiany ServicePointManager dotyczy tylko bieżącego AppDomain i nie będzie utrzymywać się poza sesji (tj. co musisz zrobić, to za każdym razem, gdy uruchamiamy skrypt)

+0

Zmieniłem instrukcję na powershell -command "[System.Net.ServicePointManager] :: MaxServicePointIdleTime = 600000; invoke-webrequest http://www.example.com/longrunningtask" i nadal zabija po 100 sekundach. – Josh

+0

Nie działa również dla mnie :( –