題 PowerShell相當於捲曲


有相當於 curl 在PowerShell?它是否具有類似的內置功能或是否存在第三方cmdlet?


110
2017-10-10 11:19


起源


關閉?關閉怎麼樣 superuser.com/questions/34492/..., superuser.com/questions/295021/..., superuser.com/questions/71446/... 和其他人? - Borek Bernard
實際上這個問題對我來說看起來很公平嗎?但是有一個古老的答案: stackoverflow.com/questions/340553/... - Rup
@Spoike Nice解決方案,您應該將其作為答案發布。 - Borek Bernard
查看有關在PowerShell中使用curl的這篇文章: thesociablegeek.com/azure/using-curl-in-powershell - SDsolar


答案:


PowerShell 3.0具有新命令 Invoke-RestMethod

http://technet.microsoft.com/en-us/library/hh849971.aspx

更多詳情:

https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/


74
2018-05-04 00:18



您可能需要使用Invoke-WebRequest命令,具體取決於您要完成的操作。 - Timothy Lee Russell
它也有別名 curl 要么 wget 現在在Powershell。 - CMCDragonkai
是的,他們將它們作為別名是奇怪的,因為語法完全不同。如果MS不想運送包管理器並且很容易獲得常見的基本工具,將它隱藏在虛假別名後面就不會使情況更好。 - MichaelGG
Invoke-WebRequest的最大問題是,如果IE沒有“初始化”,它就不起作用;所以在編寫管道或DSC腳本時,你必須先做一些額外的工作,或者你可以使用Invoke-RestMethod。 - LimpingNinja
@LimpingNinja,你有這個來源嗎?也許你遇到的問題是由於:“ - UseBasicParsing使用HTML內容的響應對象而沒有文檔對像模型(DOM)解析。當計算機上沒有安裝Internet Explorer時,例如在服務器核心安裝上,此參數是必需的一個Windows Server操作系統。“從 msdn.microsoft.com/powershell/reference/3.0/... - Michael Kelley


優秀的命令行功夫博客有 一個帖子 他們比較curl,wget和相關的PowerShell命令

簡而言之:

(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html","C:\hello-world.html")

或者,如果您的Powershell / .Net版本不接受2個參數 DownloadString

(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html") > "C:\hello-world.html"

26
2017-10-10 11:26



這個答案 提到了 DownloadFile 功能也很好用。 - Paul Hicks


從Powershell 5.0開始,如果不是之前, curl 是別名 Invoke-WebRequest

PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize

CommandType Name                      Version Source
----------- ----                      ------- ------
Alias       curl -> Invoke-WebRequest
Alias       iwr -> Invoke-WebRequest
Alias       wget -> Invoke-WebRequest

要使用unaliased命令...

PS> Invoke-WebRequest -Uri https://localhost:443/
PS> Invoke-WebRequest -Uri https://www.google.com

所以返回請求的幾個屬性如下...

PS> Invoke-WebRequest -Uri https://www.google.com

StatusCode        : 200
StatusDescription : OK
Content           : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-AU"><head><meta content="text/html; charset=UTF-8"
                    http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/...
RawContent        : HTTP/1.1 200 OK
                    X-XSS-Protection: 1; mode=block
                    X-Frame-Options: SAMEORIGIN
                    Vary: Accept-Encoding

......或只是內容......

PS> Invoke-WebRequest -Uri https://www.google.com | Select-Object -ExpandProperty Content

<!doctype html><html itemscope="" itemtype="http://schem[etc ...]

等效的別名命令是......

PS> curl -Uri https://www.google.com
PS> curl -Uri https://www.google.com | Select-Object -ExpandProperty Content

利用Powershell默認值和其他別名,您可以縮短命令

PS> curl https://www.google.com 
ps> curl https://www.google.com | Select -ExpandProperty Content

......但我不推薦它。在閱讀代碼時,詳細命令可以幫助其他人。


25
2017-10-30 23:21



什麼是-Uri旗幟在做什麼......無論是否為'curl -Uri,我得到相同的結果 api.github.com/rate_limit“。我搜索過這個,但仍然不確定 - Drenai
在powershell中,可以從參數值的順序隱式地導出一些參數名稱。你可以通過觀察看到這一點 get-help curl。你會看到的 Invoke-WebRequest [-Uri] <Uri> ...,括號 [] 說明 -Uri 可以省略(因此隱式調用)。正如我在主帖中所提到的:一般來說,你應該是明確的(你或其他人將來會讀你的代碼)。 - John Bentley
啊 - 謝謝。所以我把它留了出去,但它仍然被調用,不知道那是什麼 [] 沒有 - Drenai
別客氣。你有它。您在其中找到的powershell命令的語法說明 get-help 在某些版本中給出 en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form。你會很好地閱讀/瀏覽,因為某些版本的Extended Backus Naur Form可能會用來描述你會遇到的許多語言的語法。你會注意到的 en.wikipedia.org/wiki/... 括號 [ ...] 指定可選的語法。 - John Bentley


你也可以安裝 Git for Windows,然後將Git bin文件夾放在您的路徑中。 Git安裝包括curl.exe等。安裝完畢後,就把它放好 %programfiles(x86)%\git\bin 在你的路徑中。然後,您將能夠使用Windows命令提示符或PowerShell控制台中的curl命令。


14
2018-04-04 01:20





您可以 使用Chocolatey安裝cURL 並在PowerShell CLI或中提供curl cmd


13
2018-01-22 15:07



然後去投票吧 connect.microsoft.com/PowerShell/feedbackdetail/view/1089296/... - MotoWilliams


最接近的 wget 要么 curl 在窗戶上  (後台智能傳輸服務),它有一些片段為powershell準備好了。


1
2017-12-11 16:38



我認為BITS解決了與wget或curl不同的問題。 - ongle
從Http-Server獲取東西? - akira
沒有:),它的背景情報部分。 - ongle


這個命令應該工作:

Invoke-WebRequest -UseBasicParsing -Uri http://example.com/

這是其中的一部分 Microsoft.PowerShell.Utility 自PowerShell 3.0以來。

也可以看看: 獲取$ webclient.downloadstring以寫入Powershell中的文本文件


0
2018-02-13 12:01