2011-10-10 11:19:21 +0000 2011-10-10 11:19:21 +0000
155
155

PowerShell equivalente a

Existe um equivalente a curl na PowerShell? Tem alguma capacidade incorporada semelhante ou existe um cmdlet de terceiros?

Respostas (8)

104
104
104
2013-05-04 00:18:17 +0000
46
46
46
2015-10-30 23:21:20 +0000

A partir de Powershell 5.0, se não antes, curl é um nome falso para 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

Utilizar o comando sem serrilhado …

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

… […] Os comandos Verbose ajudam os outros ao ler o seu código.

Actualização:

Powershell 6.x

Uso de pseudónimos desencorajados

A partir de Powershell 6.x “Core” curl já não é um pseudónimo de Invoke-WebRequest (o pseudónimo wget também é removido) . […]

Que o RFC nota “Os apelidos wget/curl já foram removidos do PowerShell Core pelo que o problema [de ter esses apelidos] estava limitado ao Windows PowerShell”

Na conclusão, a equipa Powershell também encoraja os utilizadores “a não confiarem em apelidos em scripts”. […]

Nova Codificação

Recomenda-se a actualização do Powershell “core” (6.x ou superior) de modo a tirar partido da codificação padrão Invoke-WebRequest, quando se utiliza o curl (e muitos outros comandos de saída de texto). […] É claro que se precisar de outra codificação pode definir explicitamente alguma alternativa.

Em Powershell 5.0 e baixar a codificação de wget não estava disponível, quanto mais o padrão.

Detalhes:

29
29
29
2011-10-10 11:26:27 +0000

O excelente blog Kung Fu de Linha de Comando tem um post onde comparam os comandos curl, wget e os comandos PowerShell relacionados

Em resumo:

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

Ou, se a sua versão do Powershell/.Net não aceita 2 parâmetros para DownloadString:

(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html") > "C:\hello-world.html"
15
15
15
2013-04-04 01:20:37 +0000

Você também pode instalar Git for Windows , e depois colocar a pasta Git bin no seu caminho. A instalação de Git inclui, entre outras coisas, o curl.exe. Após a instalação, basta colocar o %programfiles(x86)%\git\bin no seu PATH. Então você poderá usar o comando curl do Windows Command Prompt ou PowerShell console.

14
14
14
2013-01-22 15:07:59 +0000

Pode instalar cURL com Chocolatey e ter o encaracolamento disponível em PowerShell CLI ou cmd.

1
1
1
2019-06-04 03:10:31 +0000

caracóis

cmd, bash

curl -H "Host: whoami.local" 192.168.4.4

powerhell

Invoke-WebRequest -H @{"Host"="whoami.local"} -UseBasicParsing 192.168.4.4

# or 
# $(Get-Command curl) return "curl -> Invoke-WebRequest"
curl -H @{"Host"="whoami.local"} -UseBasicParsing 192.168.4.4
1
1
1
2011-12-11 16:38:28 +0000

o mais próximo de wget ou curl no Windows é bits (Background Intelligent Transfer Service), que tem alguns snippets prontos para o powerhell.

0
0
0
2018-02-13 12:01:17 +0000

Este comando deve funcionar:

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

Faz parte do Microsoft.PowerShell.Utility desde PowerShell 3.0.

Veja também: Get $webclient.downloadstring to write to text file in Powershell .