2013-12-09 20 views
5

Aşağıdakiler, web proxy kullanmayan makinemde iyi çalışıyor.Invoke-RestMethod'u varsayılan web proxy'sini nasıl kullanabilirim?

return Invoke-RestMethod 
    -Uri $server$url 
    -ContentType $contentType 
    -Headers $headers 
    -Method $method 
    -UseDefaultCredentials 

Not: $server$url Şimdi https://somewhere.example.com/api/data

Ben çalışmak almaya çalışıyorum gibi bir https adresi şeydir bir şirket ortamı ancak 401 hatası alıyorum.

Bunun nedeni proxy.pac dosyasıyla tanımlanan bir şirket proxy'si olmasıdır. Internet Explorer'dan $server$url URI'ye ulaşabileceğimi doğruladım. Aynı ayarları kullanarak çalışmak için Invoke-RestMethod komutunu almak için ne yapmam gerekir?

Ben -proxy parametresini

$proxy = [System.Net.WebRequest]::GetSystemWebProxy() 
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials 

return Invoke-RestMethod 
    -Uri $server$url 
    -ContentType $contentType 
    -Headers $headers 
    -Method $method 
    -UseDefaultCredentials 
    -Proxy $proxy 
    -ProxyUseDefaultCredentials 

ama -proxy parametre bir URI değil IWebProxy nesne bekliyor ekleyerek çalıştılar.

cevap

2

Düzenleme: Yanlış adres komutu artık çalışmıyor sağlanan ve yerine vekil adresi verilen adresini döndürür sonra .. bu kullanmayın: this yılında kod parçacığını kullanarak, vekil uri almak mümkün duyuyorum PowerShell gibi: Bu yerine

[System.Net.WebRequest]::DefaultWebProxy.GetProxy([uri]("http://www.google.com")) 

kullanımı:

[System.Net.WebRequest]::GetSystemWebProxy().GetProxy("http://www.google.com") 

hala sağlanan URI döndürür (veya atar) uri geçersiz olduğunda, ancak sağlanan bir kez doğru uri st sanat yeniden çalışıyor.

+0

Hmm ... benim durumumda URL bir https adresidir. Sonra GetSystemWebProxy(). GetProxy() 'döndürür _ ServicePointManager, https scheme_ ile proxy'leri desteklemez. – shamp00

5

Kabul edilen cevap beni başlattı. İşte, tam sürüm

İlgili konular