120

Есть ли в PowerShell эквивалент curl ? Есть ли у него похожая встроенная возможность или есть сторонний командлет?

7 ответов7

81

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/

27

Начиная с 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

Чтобы использовать несвязанную команду ...

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

... но я бы не рекомендовал это. Подробные команды помогают другим при чтении вашего кода.

27

В отличном блоге о командной строке Kung Fu есть пост, в котором сравниваются 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"
15

Вы также можете установить Git для Windows, а затем поместить папку Git bin в свой путь. Установка Git включает, помимо прочего, curl.exe. После установки просто поместите %programfiles(x86)%\git\bin в вашу PATH. После этого вы сможете использовать команду curl из командной строки Windows или консоли PowerShell.

13

Вы можете установить cURL с Chocolatey и иметь доступ к curl в PowerShell CLI или cmd .

1

самая близкая вещь к wget или curl на окнах - это биты (Background Intelligent Transfer Service), у которых есть некоторые фрагменты, готовые для powershell.

0

Эта команда должна работать:

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

Это часть Microsoft.PowerShell.Утилита начиная с PowerShell 3.0.

Смотрите также: Получить $ webclient.downloadstring для записи в текстовый файл в Powershell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .