Gibt es ein Äquivalent zu curl
in PowerShell? Verfügt es über eine ähnliche integrierte Funktion oder gibt es ein Cmdlet eines Drittanbieters?
powershell
curl
Borek Bernard
quelle
quelle
Antworten:
PowerShell 3.0 verfügt über den neuen Befehl
Invoke-RestMethod
:http://technet.microsoft.com/en-us/library/hh849971.aspx
Mehr Details:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
quelle
curl
oderwget
in Powershell aliasiert .Ab Powershell 5.0 ist, wenn nicht schon früher,
curl
ein Alias fürInvoke-WebRequest
.So verwenden Sie den Befehl "unalias":
So geben Sie mehrere Eigenschaften der Anfrage wie folgt zurück ...
... oder nur der Inhalt ...
Die entsprechenden Alias-Befehle lauten ...
Wenn Sie die Powershell-Standardeinstellungen und andere Aliase nutzen, können Sie die Befehle auf verkürzen
... aber ich würde es nicht empfehlen. Ausführliche Befehle helfen anderen beim Lesen Ihres Codes.
Aktualisieren:
Powershell 6.x
Die Verwendung von Aliasnamen wird nicht empfohlen
Ab Powershell 6.x ist "Core"
curl
kein Alias mehr fürInvoke-WebRequest
(der Aliaswget
wird auch entfernt). Verwenden Sie stattdessenInvoke-WebRequest
direkt.Curl ist nicht länger ein Alias für Invoke-WebRequest (getestet auf Powershell 6.2.3), obwohl ein Antrag in einem RFC anscheinend abgelehnt wurde, "die Aliase Curl und Wget aus Windows PowerShell zu entfernen" .
RFC-Hinweis "Die wget / curl-Aliase wurden bereits aus PowerShell Core entfernt, sodass das Problem [mit diesen Aliasen] auf Windows PowerShell beschränkt war."
Abschließend ruft das Powershell-Team die Benutzer dazu auf, "sich nicht auf Aliase in Skripten zu verlassen".
Wie @ v6ak in den Kommentaren unter
curl
undwget
in PowerShell (5.0 oder niedriger) angemerkt hat, kann dies ein Problem sein bei: unbeabsichtigtem Aufrufen der echten Wellung oder Wget, wenn diese Seite an Seite installiert werden; und verursacht in jedem Fall Verwirrung.Neue Codierung
Es wird empfohlen, Powershell "core" (6.x oder höher) zu aktualisieren, um die Standardcodierung
utf8NoBOM
bei VerwendungInvoke-WebRequest
(und vielen anderen Textausgabebefehlen) zu nutzen. Wenn man das explizit machen würde, könnte man so etwas machen:Aber selbst wenn ein kürzerer, impliziter Befehl verwendet wird ...
Die Codierung mit
utf8NoBOM
wird ausgeführt (Sie können dies überprüfen, indem Sie beispielsweise die gespeicherte Datei in Visual Studio Code öffnen und "UTF-8" in der Statusleiste beobachten).Dateien, die mit gespeichert wurden
utf8NoBOM
, verursachen in der Regel weniger Probleme, wenn Sie durch verschiedene Ökosysteme reisen. Wenn Sie eine andere Codierung benötigen, können Sie natürlich eine Alternative explizit festlegen.In Powershell 5.0 und niedriger war die
utf8NoBOM
Codierung nicht verfügbar, geschweige denn die Standardeinstellung.Einzelheiten:
quelle
get-help curl
. Sie werden sehenInvoke-WebRequest [-Uri] <Uri> ...
, dass die Klammern[]
weggelassen werden-Uri
können (und daher implizit aufgerufen werden). Wie ich im Hauptbeitrag erwähnt habe: Im Allgemeinen sollten Sie explizit angeben (wo Sie oder andere Ihren Code in Zukunft lesen werden).[]
getan hatget-help
in einer Version von en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Sie sollten dies gut lesen / überfliegen, da einige Versionen von Extended Backus Naur Form wahrscheinlich zur Beschreibung der Syntax vieler Sprachen verwendet werden, auf die Sie stoßen werden. Sie werden feststellen, dass unter en.wikipedia.org/wiki/… in Klammern[ ...]
die Syntax angegeben ist, die optional ist.Der ausgezeichnete Blog Command Line Kung Fu enthält einen Beitrag, in dem Curl, Wget und die zugehörigen PowerShell-Befehle verglichen werden
In einer Nussschale:
Oder wenn Ihre Version von Powershell / .Net keine 2 Parameter akzeptiert für
DownloadString
:quelle
DownloadFile
Funktion, die auch gut funktioniert.Sie können Git auch für Windows installieren und dann den Ordner Git bin in Ihren Pfad einfügen. Die Git-Installation beinhaltet unter anderem curl.exe. Geben Sie nach der Installation einfach
%programfiles(x86)%\git\bin
Ihren PFAD ein. Dann können Sie den Befehl curl über die Windows-Eingabeaufforderung oder die PowerShell-Konsole verwenden.quelle
Sie können cURL mit Chocolatey installieren und curl in PowerShell CLI oder verwenden
cmd
.quelle
die nächste Sache,
wget
odercurl
an Fenstern ist Bits (Background Intelligent Transfer Service), die einige Schnipsel bereit für Powershell hat.quelle
Dieser Befehl sollte funktionieren:
Es ist Teil von Microsoft.PowerShell.Utility seit PowerShell 3.0.
Siehe auch: Holen Sie sich $ webclient.downloadstring, um in Powershell in eine Textdatei zu schreiben .
quelle
locken
cmd, bash
Power Shell
quelle