Existe um equivalente curl
no PowerShell? Possui algum recurso interno semelhante ou existe um cmdlet de terceiros?
powershell
curl
Borek Bernard
fonte
fonte
Respostas:
O 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/
fonte
curl
ouwget
no PowerShell agora.A partir do Powershell 5.0, se não antes,
curl
é um alias paraInvoke-WebRequest
.Para usar o comando sem serrilhado ...
Portanto, retorne várias propriedades da solicitação da seguinte maneira ...
... ou apenas o conteúdo ...
Os comandos com alias equivalentes são ...
Aproveitando os padrões do Powershell e outros aliases, você pode reduzir os comandos para
... mas eu não recomendaria. Os comandos detalhados ajudam outras pessoas ao ler seu código.
Atualizar:
Powershell 6.x
Uso de aliases desencorajado
A partir do Powershell 6.x, "Core"
curl
não é mais um alias paraInvoke-WebRequest
(o aliaswget
também é removido). Em vez disso, useInvoke-WebRequest
diretamente.A ondulação não é mais um alias para Invoke-WebRequest (testado no Powershell 6.2.3), apesar de uma aparente rejeição de um movimento em uma RFC "para remover os aliases ondulados e wget do Windows PowerShell" .
Que a RFC observa "Os aliases wget / curl já foram removidos do PowerShell Core, portanto o problema [de ter esses aliases] foi limitado ao Windows PowerShell".
Na conclusão, a equipe do Powershell também incentiva os usuários "a não confiarem em aliases nos scripts".
Como o @ v6ak observou nos comentários, o uso
curl
ewget
no PowerShell (5.0 ou inferior) pode ser um problema: involuntariamente involuntariamente o real curl ou wget, se instalado lado a lado; e, em qualquer caso, causa confusão.Nova codificação
Recomenda-se atualizar o "core" do Powershell (6.x ou superior) para aproveitar a codificação padrão
utf8NoBOM
ao usarInvoke-WebRequest
(e muitos outros comandos de saída de texto). Se alguém estivesse fazendo isso explicitamente, você poderia fazer algo como:No entanto, mesmo ao usar um comando mais curto, implícito, ...
... a codificação
utf8NoBOM
será feita (você pode verificar isso, por exemplo, abrindo o arquivo salvo no Visual Studio Code e observando "UTF-8" na barra de status).Os arquivos salvos
utf8NoBOM
tendem a causar menos problemas ao viajar por vários ecossistemas. Obviamente, se você precisar de outra codificação, poderá definir algumas alternativas explicitamente.No Powershell 5.0 e inferior, a
utf8NoBOM
codificação não estava disponível, muito menos o padrão.Detalhes:
fonte
get-help curl
. Você verá queInvoke-WebRequest [-Uri] <Uri> ...
, com os colchetes, a[]
indicação-Uri
pode ser deixada de fora (e, portanto, implicitamente invocada). Como mencionei no post principal: em geral, você deve ser explícito (onde você ou outras pessoas vão ler seu código no futuro).[]
fezget-help
são fornecidas em algumas versões do en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Você fará bem em ler / ler isso porque, provavelmente, uma versão do Extended Backus Naur Form é usada para descrever a sintaxe de muitos idiomas que você encontrará. Você notará que, em en.wikipedia.org/wiki/…, colchetes[ ...]
designam sintaxe opcional.O excelente blog Kung Fu da linha de comando tem uma postagem na qual eles comparam curl, wget e os comandos relacionados do PowerShell
Em poucas palavras:
Ou, se sua versão do Powershell / .Net não aceitar 2 parâmetros para
DownloadString
:fonte
DownloadFile
função que também funciona bem.Você também pode instalar o Git for Windows e, em seguida, colocar a pasta bin Git no seu caminho. A instalação do Git inclui, entre outras coisas, curl.exe. Após a instalação, basta colocar
%programfiles(x86)%\git\bin
no seu PATH. Em seguida, você poderá usar o comando curl no prompt de comando do Windows ou no console do PowerShell.fonte
Você pode instalar o cURL com Chocolatey e ter a ondulação disponível na CLI do PowerShell ou
cmd
.fonte
o mais próximo
wget
oucurl
no Windows são os bits (Serviço de transferência inteligente em segundo plano), que possui alguns trechos prontos para o PowerShell.fonte
Este comando deve funcionar:
Faz parte do Microsoft.PowerShell.Utility desde o PowerShell 3.0.
Veja também: Faça com que $ webclient.downloadstring grave no arquivo de texto no Powershell .
fonte
ondulação
cmd, bash
PowerShell
fonte