Czy istnieje odpowiednik programu curl
PowerShell? Czy ma podobne wbudowane możliwości, czy jest też polecenie cmdlet innej firmy?
powershell
curl
Borek Bernard
źródło
źródło
Odpowiedzi:
Program PowerShell 3.0 ma nowe polecenie
Invoke-RestMethod
:http://technet.microsoft.com/en-us/library/hh849971.aspx
więcej szczegółów:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
źródło
curl
lubwget
w Powershell.Począwszy od Powershell 5.0, jeśli nie wcześniej,
curl
jest to alias dlaInvoke-WebRequest
.Aby użyć niezmienionego polecenia ...
Zwróć więc kilka właściwości żądania w następujący sposób ...
... lub po prostu treść ...
Równoważne polecenia aliasu to ...
Wykorzystując wartości domyślne programu PowerShell i inne aliasy, do których możesz skrócić polecenia
... ale nie poleciłbym tego. Pełne polecenia pomagają innym podczas odczytywania kodu.
Aktualizacja:
PowerShell 6.x
Odradzane jest używanie aliasów
Począwszy od Powershell 6.x „Core”
curl
nie jest już aliasem dlaInvoke-WebRequest
(aliaswget
jest również usuwany). Zamiast tego użyjInvoke-WebRequest
bezpośrednio.Curl nie jest już aliasem dla Invoke-WebRequest (testowany w Powershell 6.2.3), pomimo pozornego odrzucenia ruchu w RFC „aby usunąć curl i wget z Windows PowerShell” .
RFC zauważa: „Aliasy wget / curl zostały już usunięte z programu PowerShell Core, więc problem [posiadania tych aliasów] ograniczał się do Windows PowerShell”.
Podsumowując, zespół Powershell zachęca również użytkowników, by „nie polegali na aliasach w skryptach”.
Jak zauważył @ v6ak w komentarzach przy użyciu
curl
iw programiewget
PowerShell (5.0 lub nowszym ) może być problem w: niezamierzonym wywołaniu prawdziwego zwijania lub wget, jeśli jest instalowany obok siebie; i w każdym razie powoduje zamieszanie.Nowe kodowanie
Zaleca się aktualizację „rdzenia” programu PowerShell (6.x lub nowszy), aby skorzystać z domyślnego kodowania
utf8NoBOM
podczas używaniaInvoke-WebRequest
(i wielu innych poleceń do wysyłania tekstu). Jeśli ktoś robi to wprost, możesz zrobić coś takiego:Jednak nawet przy użyciu krótszego, domyślnego polecenia ...
...
utf8NoBOM
zostanie wykonane kodowanie za pomocą (możesz to zweryfikować, na przykład otwierając zapisany plik w programie Visual Studio Code i obserwując „UTF-8” na pasku stanu).Pliki zapisane za pomocą
utf8NoBOM
zwykle powodują mniej problemów podczas podróży przez różne ekosystemy. Oczywiście, jeśli potrzebujesz innego kodowania, możesz jawnie ustawić alternatywę.W Powershell 5.0 i niższych
utf8NoBOM
kodowanie nie było dostępne, nie mówiąc już o domyślnym.Detale:
źródło
get-help curl
. ZobaczyszInvoke-WebRequest [-Uri] <Uri> ...
, ze nawiasami[]
wskazującymi-Uri
można pominąć (i dlatego niejawnie wywołać). Jak wspomniałem w głównym poście: ogólnie powinieneś być wyraźny (tam, gdzie ty lub inni zamierzacie przeczytać swój kod w przyszłości).[]
zrobiłget-help
się w niektórych wersjach en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Zrobisz to dobrze, czytając / przeglądając to, ponieważ pewna wersja formularza Extended Backus Naur Form jest prawdopodobnie używana do opisania składni wielu języków, które napotkasz. Zauważysz, że na en.wikipedia.org/wiki/… nawiasy[ ...]
oznaczają składnię, która jest opcjonalna.Doskonały blog Kung Fu z wiersza poleceń zawiera post, w którym porównuje curl, wget i powiązane polecenia PowerShell
W skrócie:
Lub, jeśli twoja wersja Powershell / .Net nie akceptuje 2 parametrów dla
DownloadString
:źródło
DownloadFile
funkcji, która również działa dobrze.Możesz również zainstalować Git dla Windows , a następnie umieścić folder Git bin na swojej ścieżce. Instalacja Git obejmuje między innymi curl.exe. Po instalacji, po prostu
%programfiles(x86)%\git\bin
wprowadź swoją ŚCIEŻKĘ. Następnie będziesz mógł użyć polecenia curl z wiersza polecenia systemu Windows lub konsoli PowerShell.źródło
Możesz zainstalować cURL z Chocolatey i mieć dostępne curl w PowerShell CLI lub
cmd
.źródło
najbliższą rzeczą
wget
lubcurl
w systemie Windows są bity (Usługa inteligentnego transferu w tle), która ma kilka fragmentów gotowych na PowerShell.źródło
To polecenie powinno działać:
Jest częścią Microsoft.PowerShell.Utility od PowerShell 3.0.
Zobacz także: Pobierz $ webclient.downloadstring, aby napisać do pliku tekstowego w Powershell .
źródło
kędzior
cmd, bash
PowerShell
źródło