2015-12-07 31 views
9

Aramak için Powershell'e ihtiyacım olan uzun süren bir web sayfam var. Aşağıdaki ile, görev yöneticisinden bir gece olarak çalıştırın:Invoke-WebRequest zaman aşımı

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

ancak web sitesi devreye girmeden önce, Powershell zaman aşımı oluşur. Invoke-WebRequest'da zaman aşımını standart 60 saniyeden daha uzun sürecek şekilde ayarlamanın bir yolu var mı?

+0

Zaman aşımı için gereken süreyi saydınız/ölçtünüz mü? 60 saniye mi? 100 saniye mi? –

+0

@ MathiasR.Jessen 100 saniye – Josh

+0

O zaman cevabımı görmenizi öneririm :) –

cevap

9

-TimeoutSec parametresi olmalı, Invoke-WebRequest cmdlet'ini ararken bir tamsayı değeri besleyebilirsiniz.

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

Bunu gördüm ama DNS çözünürlüğü için. DNS hemen bulunur, ancak sorgu varsayılan süreden daha uzun sürer. Güncellenebilecek bir yerde küresel bir PS ayarı var mı? – Josh

+1

Genel bir ayar mevcut değil. Web cmdlet'lerinin çoğu için varsayılan zaman aşımı, [System.Net.HttpWebRequest.Timeout] öğesinden okunur. Her zaman WebClient sınıfının biraz özelleştirilmiş bir kopyasını oluşturmayı ve yalnızca Zaman Aşımı özelliğini değiştirmeyi deneyebilirsiniz. Çalışıp çalışmadığını görmek için http://stackoverflow.com/questions/1789627/how-to-change-the-timeout-on-a-net-webclient-object. –

0

Statik ServicePointManager.MaxServicePointIdleTime özelliğini ayarlayarak zaman aşımı çevresinde çalışabilirsiniz. Varsayılan değer 100000ms (100 saniye) 'dir:

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

# Now run your Invoke-WebRequest after making the change 

değişiklikler ServicePointManager için yalnızca geçerli uygulama etki alanı için de geçerlidir ve bu oturumdaki ötesinde kalıcı olmaz

(. Yani bunu size komut dosyasını çalıştırın her zaman yapmak gerekir)
+0

Bildirimi powershell -command olarak değiştirdim "[System.Net.ServicePointManager] :: MaxServicePointIdleTime = 600000; invoke-webrequest http://www.example.com/longrunningtask" ve hala 100 saniyede öldürüyor. – Josh

+0

Benim için de işe yaramadı :( –