web-dev-qa-db-fra.com

PowerShell équivalent à curl

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?

131
Borek Bernard
87
Michael Kelley

À 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

Renvoyez 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 équivalentes aliasées 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.

34
John Bentley

L'excellent blog Command Line Kung Fu contient un article 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"
28
ipr101

Vous pouvez également installer Git pour Windows , puis placer le dossier bin Git 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.

15
Jamie

Vous pouvez installer cURL avec Chocolatey et disposer de curl dans PowerShell CLI ou cmd.

14
Spoike

la chose la plus proche de wget ou curl sous windows est bits (service de transfert intelligent en arrière-plan), qui contient des extraits prêts à être utilisés dans PowerShell.

1
akira

Cette commande devrait fonctionner:

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

Cela fait partie de Microsoft.PowerShell.Utility depuis PowerShell 3.0.

Voir aussi: Obtenez $ webclient.downloadstring pour écrire dans un fichier texte dans Powershell .

0
kenorb