Question PowerShell équivalent de curl


Y a-t-il un équivalent de curl dans PowerShell? Possède-t-il une fonctionnalité intégrée similaire ou existe-t-il une cmdlet tierce?


105
2017-10-10 11:19


origine


Fermé? Que diriez-vous de fermer superuser.com/questions/34492/, superuser.com/questions/295021/ ..., superuser.com/questions/71446/ et hôte d'autres? - Borek Bernard
En fait, cette question me semble juste? Mais il y a une vieille réponse: stackoverflow.com/questions/340553/... - Rup
@ Spoike Nice solution, vous devriez le poster comme une réponse. - Borek Bernard
Consultez cet article sur l'utilisation de curl dans PowerShell: thesociablegeek.com/azure/using-curl-in-powershell - SDsolar


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/


71
2018-05-04 00:18



Vous pouvez souhaiter la commande Invoke-WebRequest à la place, en fonction de ce que vous essayez d'accomplir. - Timothy Lee Russell
Il est également aliasé comme curl ou wget à Powershell maintenant. - CMCDragonkai
Oui, il est bizarre qu'ils les aliasent, car la syntaxe est complètement différente. Si MS ne veut pas expédier un gestionnaire de paquets et facilite l’accès à des outils de base communs, le cacher derrière un faux alias ne va pas améliorer la situation. - MichaelGG
Le plus gros problème avec Invoke-WebRequest est qu’il ne fonctionne pas si IE n’est pas «initialisé»; Ainsi, lors de l'écriture de scripts pipeline ou DSC, vous devez d'abord faire quelques démarches supplémentaires ou utiliser Invoke-RestMethod. - LimpingNinja
@LimpingNinja, avez-vous une source pour cela? Le problème que vous avez rencontré est peut-être dû à ceci: "-UseBasicParsing Utilise l'objet de réponse pour le contenu HTML sans analyse DOM (Document Object Model). Ce paramètre est requis lorsque Internet Explorer n'est pas installé sur les ordinateurs, par exemple sur une installation Server Core d'un système d'exploitation Windows Server. " de msdn.microsoft.com/powershell/reference/3.0/ - Michael Kelley


L’excellent blog Kung Fu de Command Line a une publication où ils comparent curl, wget et les commandes PowerShell associées

En un mot:

(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html","C:\hello-world.html")

Ou, si votre version de Powershell / .Net n'accepte pas 2 paramètres pour DownloadString:

(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html") > "C:\hello-world.html"

25
2017-10-10 11:26



Cette réponse mentionne le DownloadFile fonction qui fonctionne bien aussi. - Paul Hicks


À partir de Powershell 5.0, sinon avant curl est un alias pour 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

Pour utiliser la commande sans alias ...

PS> Invoke-WebRequest -Uri https://localhost:443/
PS> Invoke-WebRequest -Uri https://www.google.com

Retournez donc plusieurs propriétés de la requête comme suit ...

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

... ou juste le contenu ...

PS> Invoke-WebRequest -Uri https://www.google.com | Select-Object -ExpandProperty Content

<!doctype html><html itemscope="" itemtype="http://schem[etc ...]

Les commandes d'alias équivalentes sont ...

PS> curl -Uri https://www.google.com
PS> curl -Uri https://www.google.com | Select-Object -ExpandProperty Content

En utilisant les valeurs par défaut de Powershell et d’autres alias, vous pouvez raccourcir les commandes pour

PS> curl https://www.google.com 
ps> curl https://www.google.com | Select -ExpandProperty Content

... mais je ne le recommanderais pas. Les commandes verbeuses aident les autres lors de la lecture de votre code.


23
2017-10-30 23:21



Qu'est-ce que le drapeau -Uri fait ... J'obtiens les mêmes résultats avec ou sans pour 'curl -Uri api.github.com/rate_limit '; J'ai cherché ça, mais je ne suis toujours pas sûr - Drenai
Dans powershell, certains noms de paramètres peuvent être implicitement dérivés de l'ordre des valeurs des paramètres. Vous pouvez voir cela en regardant get-help curl. Tu verras Invoke-WebRequest [-Uri] <Uri> ...avec les crochets [] indiquant -Uri peut être omis (et donc implicitement invoqué). Comme je l'ai mentionné dans le post principal: en général, vous devriez être explicite (où vous ou d'autres vont lire votre code à l'avenir). - John Bentley
Ah merci. Donc, je laisse tomber, mais il est toujours invoqué, ne savait pas que c'est ce que le [] fait - Drenai
Je vous en prie. Vous l'avez. Les descriptions de syntaxe des commandes powershell que vous trouvez dans get-help est donné dans une version de en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form. Vous ferez bien de lire / parcourir 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 que chez en.wikipedia.org/wiki/... supports [ ...] Désignez une syntaxe facultative. - John Bentley


Vous pouvez installer cURL avec Chocolatey et avoir curl disponible dans PowerShell CLI ou cmd.


13
2018-01-22 15:07



Alors allez voter pour cela connect.microsoft.com/PowerShell/feedbackdetail/view/1089296/ ... - MotoWilliams


Vous pouvez également installer Git pour Windowspuis placez le dossier Git bin sur votre chemin. L'installation de Git inclut, entre autres choses, curl.exe. Après l'installation, il suffit de mettre %programfiles(x86)%\git\bin dans votre PATH. Vous pourrez alors utiliser la commande curl à partir de l'invite de commandes Windows ou de la console PowerShell.


13
2018-04-04 01:20





la chose la plus proche de wget ou curl sur les fenêtres est morceaux (Background Intelligent Transfer Service), qui contient des extraits prêts pour powershell.


1
2017-12-11 16:38



Je pense que BITS résout un problème différent de wget ou curl. - ongle
Récupérer des objets sur un serveur HTTP? - akira
Non :), l'intelligence de fond en fait partie. - ongle


Cette commande devrait fonctionner:

Invoke-WebRequest -UseBasicParsing -Uri http://example.com/

C'est une partie de Microsoft.PowerShell.Utility depuis PowerShell 3.0.

Voir également: Obtenir $ webclient.downloadstring pour écrire dans un fichier texte dans Powershell.


0
2018-02-13 12:01