Есть ли в PowerShell эквивалент curl
? Есть ли у него похожая встроенная возможность или есть сторонний командлет?
7 ответов
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/
Начиная с 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
... но я бы не рекомендовал это. Подробные команды помогают другим при чтении вашего кода.
В отличном блоге о командной строке 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"
Вы также можете установить Git для Windows, а затем поместить папку Git bin в свой путь. Установка Git включает, помимо прочего, curl.exe. После установки просто поместите %programfiles(x86)%\git\bin
в вашу PATH. После этого вы сможете использовать команду curl из командной строки Windows или консоли PowerShell.
Вы можете установить cURL с Chocolatey и иметь доступ к curl в PowerShell CLI или cmd
.
самая близкая вещь к wget
или curl
на окнах - это биты (Background Intelligent Transfer Service), у которых есть некоторые фрагменты, готовые для powershell.
Эта команда должна работать:
Invoke-WebRequest -UseBasicParsing -Uri http://example.com/
Это часть Microsoft.PowerShell.Утилита начиная с PowerShell 3.0.
Смотрите также: Получить $ webclient.downloadstring для записи в текстовый файл в Powershell.