2011-10-10 115 views
14

我正在尋找使用PowerShell的網頁的HTTP請求,這是可能的,如果是這樣,我怎麼可以實現這一目標?http請求與powershell

我可以向https頁面發出請求嗎?我能夠使用bat文件而不是https發出http請求,希望能夠使用powershell來https頁面請求。

+0

您是否要求由知名證書頒發機構簽署的站點,證書內容?瀏覽器和大多數HTTP協議棧都不願意使用不正確,過期或自簽名(測試)證書從HTTPS站點檢索內容。不過,您通常可以設置策略來忽略證書問題或導入有問題的證書。 – NerdDad

回答

12

您可以使用.NET框架提供的通常的WebRequestHttpWebRequest類。

$request = [System.Net.WebRequest]::Create('http://example.com') 
# do something with $request 

這是使用相同的類和API從C#,除了語法差異PowerShell的沒有什麼不同。

PowerShell v3還帶來了Invoke-WebRequest和其他一些。

+0

是否可以向https頁面發送請求? – amateur

+1

是的,請參閱http://stackoverflow.com/questions/560804/how-do-i-use-webrequest-to-access-an-ssl-encrypted-site-using-https –

+0

只是爲了防止任何人需要發送POST請求,因爲那是我需要的下一件事: $ request = [System.Net.WebRequest] :: Create('mypageurl'); $ request.Method =「POST」; $請求。ContentType =「application/x-www-form-urlencoded」; $ bytes = [System.Text.Encoding] :: ASCII.GetBytes(「name = john&number = 5」); $ request.ContentLength = $ bytes.Length; $ requestStream = $ request.GetRequestStream(); $ requestStream.Write($ bytes,0,$ bytes.Length); $ requestStream.Close(); $ request.GetResponse(); –

12

試試這個:

(New-Object System.Net.WebClient).DownloadString("http://stackoverflow.com") 

WebClient.DownloadString Method (String)

或使用PowerShell 3.0,

(Invoke-WebRequest http://stackoverflow.com).content 

Invoke-WebRequest

+0

短而甜,並且使用附加到地址的查詢字符串。 –

2

如果一切都失敗了,用捲曲的http://curl.haxx.se。您可以設置所有內容,包括證書處理,POST等。不是微妙的,但它可以工作並處理所有奇怪的案例;例如您可以將--insecure標誌設置爲忽略證書名稱問題,到期日期或測試狀態。

1

您可以使用Invoke-WebRequest cmdlet創建HTTP,HTTPS,FTP和FILE請求。這很容易,並提供了許多選項來玩。 例子:爲了讓簡單的HTTP/HTTPS請求google.com

Invoke-WebRequest -Uri "http://google.com" 

更多業績可以發現MSDN