Есть ли эквивалент curl
в PowerShell? Есть ли у него похожая встроенная возможность или есть сторонний командлет?
powershell
curl
Борек Бернард
источник
источник
Ответы:
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/
источник
curl
илиwget
в Powershell сейчас.Начиная с Powershell 5.0, если не раньше,
curl
это псевдоним дляInvoke-WebRequest
.Чтобы использовать несвязанную команду ...
Поэтому верните несколько свойств запроса следующим образом ...
... или просто содержание ...
Эквивалентные команды с псевдонимами ...
Используя значения по умолчанию Powershell и другие псевдонимы, вы можете сократить команды до
... но я бы не рекомендовал это. Подробные команды помогают другим при чтении вашего кода.
Обновить:
Powershell 6.x
Использование псевдонимов не рекомендуется
Начиная с Powershell 6.x «Ядро»
curl
больше не является псевдонимом дляInvoke-WebRequest
(псевдонимwget
также удаляется). Вместо этого используйтеInvoke-WebRequest
напрямую.Curl больше не является псевдонимом для Invoke-WebRequest (протестирован на Powershell 6.2.3), несмотря на очевидное отклонение предложения в RFC «удалить псевдонимы curl и wget из Windows PowerShell» .
В RFC отмечается: «Псевдонимы wget / curl уже удалены из PowerShell Core, поэтому проблема с наличием этих псевдонимов была ограничена Windows PowerShell».
В заключение команда Powershell также призывает пользователей «не полагаться на псевдонимы в сценариях».
Как отметил @ v6ak в комментариях, использование
curl
иwget
в PowerShell (5.0 или ниже) может вызвать проблемы в: непреднамеренном вызове реального curl или wget, если он установлен рядом; и, в любом случае, вызывает путаницу.Новая кодировка
Рекомендуется обновить «ядро» Powershell (6.x или выше), чтобы использовать преимущества кодировки по умолчанию
utf8NoBOM
при использованииInvoke-WebRequest
(и многих других команд вывода текста). Если кто-то делал это явно, вы могли бы сделать что-то вроде:Однако даже при использовании более короткой неявной команды ...
...
utf8NoBOM
будет выполнено кодирование с помощью (вы можете проверить это, например, открыв сохраненный файл в коде Visual Studio и наблюдая «UTF-8» в строке состояния).Сохраненные файлы,
utf8NoBOM
как правило, вызывают меньше проблем при путешествии по различным экосистемам. Конечно, если вам нужна какая-то другая кодировка, вы можете явно указать альтернативу.В Powershell 5.0 и ниже
utf8NoBOM
кодировка была недоступна, не говоря уже о настройке по умолчанию.Подробности:
источник
get-help curl
. Вы увидитеInvoke-WebRequest [-Uri] <Uri> ...
, что скобки,[]
указывающие,-Uri
могут быть опущены (и, следовательно, неявно вызваны). Как я упоминал в основном посте: в общем, вы должны быть явными (где вы или другие собираетесь читать ваш код в будущем).[]
сделалget-help
приведены в некоторых версиях en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Вы преуспеете, чтобы прочитать / просмотреть это, потому что некоторая версия расширенной формы Backus Naur, вероятно, используется для описания синтаксиса многих языков, с которыми вы столкнетесь. Вы заметите, что на en.wikipedia.org/wiki/… скобки[ ...]
обозначают необязательный синтаксис.В отличном блоге о командной строке Kung Fu есть пост, в котором сравниваются curl, wget и связанные с ним команды PowerShell.
В двух словах:
Или, если ваша версия Powershell / .Net не принимает 2 параметра для
DownloadString
:источник
DownloadFile
функцию, которая также работает хорошо.Вы также можете установить Git для Windows , а затем поместить папку Git bin в свой путь. Установка Git включает, помимо прочего, curl.exe. После установки просто
%programfiles(x86)%\git\bin
введите ваш путь. После этого вы сможете использовать команду curl из командной строки Windows или консоли PowerShell.источник
Вы можете установить cURL с Chocolatey и иметь доступ к curl в PowerShell CLI или
cmd
.источник
ближе всего к окнам
wget
илиcurl
к ним есть биты (Background Intelligent Transfer Service), у которых есть некоторые фрагменты, готовые для powershell.источник
Эта команда должна работать:
Это часть Microsoft.PowerShell.Utility начиная с PowerShell 3.0.
Смотрите также: Получить $ webclient.downloadstring для записи в текстовый файл в Powershell .
источник
локон
cmd, bash
PowerShell
источник