PowerShell equivalente a
Existe um equivalente a curl
na PowerShell? Tem alguma capacidade incorporada semelhante ou existe um cmdlet de terceiros?
Existe um equivalente a curl
na PowerShell? Tem alguma capacidade incorporada semelhante ou existe um cmdlet de terceiros?
PowerShell 3.0 tem o novo comando Invoke-RestMethod
:
http://technet.microsoft.com/en-us/library/hh849971.aspx
mais detalhes: https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
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:
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”. […]
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:
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"
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.
Pode instalar cURL com Chocolatey e ter o encaracolamento disponível em PowerShell CLI ou cmd
.
curl -H "Host: whoami.local" 192.168.4.4
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
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 .