Existe-t-il un équivalent de curl
dans PowerShell? At-il une capacité intégrée similaire ou existe-t-il une applet de commande tierce?
powershell
curl
Borek Bernard
la source
la source
Réponses:
PowerShell 3.0 a la nouvelle commande
Invoke-RestMethod
:http://technet.microsoft.com/en-us/library/hh849971.aspx
plus de détails:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
la source
curl
ouwget
dans Powershell maintenant.À partir de Powershell 5.0, sinon avant,
curl
est un alias pourInvoke-WebRequest
.Pour utiliser la commande sans alias ...
Renvoyez donc plusieurs propriétés de la requête comme suit ...
... ou juste le contenu ...
Les commandes équivalentes aliasées sont ...
En utilisant les valeurs par défaut de Powershell et d’autres alias, vous pouvez raccourcir les commandes pour
... mais je ne le recommanderais pas. Les commandes verbeuses aident les autres lors de la lecture de votre code.
Mise à jour:
Powershell 6.x
Utilisation d'alias découragée
A partir de Powershell 6.x, "Core"
curl
n'est plus un aliasInvoke-WebRequest
(l'aliaswget
est également supprimé). Utilisez plutôtInvoke-WebRequest
directement.Curl n'est plus un alias pour Invoke-WebRequest (testé sur Powershell 6.2.3), malgré le rejet apparent d'une requête dans un RFC "visant à supprimer les alias curl et wget de Windows PowerShell" .
La RFC note que "les alias wget / curl ont déjà été supprimés de PowerShell Core, de sorte que le problème [d'avoir ces alias] était limité à Windows PowerShell".
En conclusion, l'équipe de Powershell encourage également les utilisateurs "à ne pas s'appuyer sur des alias dans les scripts".
Comme @ v6ak l'a noté dans les commentaires, utiliser
curl
etwget
dans PowerShell (5.0 ou une version inférieure) peut poser un problème: en invoquant involontairement le véritable curl ou wget s'il est installé côte à côte; et, dans tous les cas, crée de la confusion.Nouveau codage
Il est recommandé de mettre à jour Powershell "core" (version 6.x ou supérieure) afin de tirer parti du codage par défaut
utf8NoBOM
lors de l’utilisationInvoke-WebRequest
(et de nombreuses autres commandes de sortie de texte). Si quelqu'un le faisait explicitement, vous pourriez faire quelque chose comme:Cependant, même si vous utilisez une commande plus courte, implicite ...
... l'encodage avec
utf8NoBOM
sera effectué (vous pouvez le vérifier, par exemple, en ouvrant le fichier enregistré dans Visual Studio Code et en observant "UTF-8" dans la barre d'état).Les fichiers enregistrés avec
utf8NoBOM
ont tendance à causer moins de problèmes lors de vos déplacements dans divers écosystèmes. Bien sûr, si vous avez besoin d'un autre encodage, vous pouvez définir explicitement une alternative.Dans Powershell 5.0 et inférieur, l’
utf8NoBOM
encodage n’était pas disponible, encore moins par défaut.Détails:
la source
get-help curl
. Vous verrezInvoke-WebRequest [-Uri] <Uri> ...
, avec les crochets[]
indiquant-Uri
peut être omis (et donc implicitement invoqué). Comme je l'ai mentionné dans l'article principal: en général, vous devez être explicite (à savoir si vous ou d'autres allez lire votre code à l'avenir).[]
qui seget-help
est donnée dans certaines versions de en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Vous ferez bien de lire / survoler cela car une version de Extended Backus Naur Form est probablement utilisée pour décrire la syntaxe de nombreuses langues que vous rencontrerez. Vous remarquerez qu’en fr.wikipedia.org/wiki/…, les crochets[ ...]
désignent une syntaxe facultative.L'excellent blog Command Line Kung Fu contient un article dans lequel ils comparent curl, wget et les commandes PowerShell associées.
En un mot:
Ou, si votre version de Powershell / .Net n'accepte pas 2 paramètres pour
DownloadString
:la source
DownloadFile
fonction qui fonctionne bien aussi.Vous pouvez également installer Git pour Windows , puis placer le dossier Git bin dans votre chemin. L'installation de Git inclut, entre autres, curl.exe. Après l’installation, il suffit de mettre
%programfiles(x86)%\git\bin
dans votre PATH. Vous pourrez ensuite utiliser la commande curl à partir de l'invite de commande Windows ou de la console PowerShell.la source
Vous pouvez installer cURL avec Chocolatey et disposer de curl dans PowerShell CLI ou
cmd
.la source
la chose la plus proche de
wget
oucurl
sur Windows est le bit (service de transfert intelligent en arrière-plan), qui contient des extraits prêts à être utilisés dans PowerShell.la source
Cette commande devrait fonctionner:
Cela fait partie de Microsoft.PowerShell.Utility depuis PowerShell 3.0.
Voir aussi: Obtenez $ webclient.downloadstring pour écrire dans un fichier texte dans Powershell .
la source
boucle
cmd, bash
PowerShell
la source