¿Hay un equivalente de curl
en PowerShell? ¿Tiene alguna capacidad incorporada similar o hay un cmdlet de terceros?
powershell
curl
Borek Bernard
fuente
fuente
Respuestas:
PowerShell 3.0 tiene el nuevo comando
Invoke-RestMethod
:http://technet.microsoft.com/en-us/library/hh849971.aspx
mas detalle:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
fuente
curl
owget
en Powershell ahora.A partir de Powershell 5.0, si no antes,
curl
es un alias paraInvoke-WebRequest
.Para usar el comando sin alias ...
Por lo tanto, devuelva varias propiedades de la solicitud de la siguiente manera ...
... o solo el contenido ...
Los comandos con alias equivalentes son ...
Aprovechando los valores predeterminados de Powershell y otros alias, puede acortar los comandos a
... pero no lo recomendaría. Los comandos detallados ayudan a otros cuando leen su código.
Actualizar:
Powershell 6.x
Se desaconseja el uso de alias
A partir de Powershell 6.x "Core"
curl
ya no es un alias paraInvoke-WebRequest
(el aliaswget
también se elimina). En lugar de usarInvoke-WebRequest
directamente.Curl ya no es un alias para Invoke-WebRequest (probado en Powershell 6.2.3), a pesar de un aparente rechazo de un movimiento en un RFC "para eliminar los alias curl y wget de Windows PowerShell" .
Ese RFC señala que "los alias wget / curl ya se eliminaron de PowerShell Core, por lo que el problema [de tener esos alias] se limitó a Windows PowerShell".
En conclusión, el equipo de Powershell también alienta a los usuarios a "no confiar en los alias en los scripts".
Como ha notado @ v6ak en los comentarios, usar
curl
ywget
en PowerShell (5.0 o inferior) puede ser un problema en: invocar involuntariamente el curl o wget real si se instala uno al lado del otro; y, en cualquier caso, causa confusión.Nueva codificación
Se recomienda actualizar Powershell "core" (6.xo superior) para aprovechar la codificación predeterminada
utf8NoBOM
cuando se utilizaInvoke-WebRequest
(y muchos otros comandos de salida de texto). Si uno estuviera haciendo esto explícitamente, podría hacer algo como:Sin embargo, incluso cuando se usa un comando más corto e implícito ...
... se realizará la codificación con
utf8NoBOM
(puede verificar esto, por ejemplo, abriendo el archivo guardado en Visual Studio Code y observando "UTF-8" en la barra de estado).Los archivos guardados
utf8NoBOM
tienden a causar menos problemas al viajar a través de varios ecosistemas. Por supuesto, si necesita otra codificación, puede establecer alguna alternativa explícitamente.En Powershell 5.0 y
utf8NoBOM
versiones anteriores, la codificación no estaba disponible, y mucho menos la predeterminada.Detalles:
fuente
get-help curl
. VeráInvoke-WebRequest [-Uri] <Uri> ...
, con los corchetes[]
indicando que-Uri
puede omitirse (y por lo tanto invocarse implícitamente). Como mencioné en la publicación principal: en general, debe ser explícito (dónde usted u otros leerán su código en el futuro).[]
hizoget-help
se dan en alguna versión de en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form . Hará bien en leer / leer eso porque alguna versión de Extended Backus Naur Form probablemente se use para describir la sintaxis de muchos idiomas con los que se encontrará. Notarás que en en.wikipedia.org/wiki/… los corchetes[ ...]
designan la sintaxis que es opcional.El excelente blog Command Line Kung Fu tiene una publicación donde comparan curl, wget y los comandos relacionados de PowerShell
En una palabra:
O, si su versión de Powershell / .Net no acepta 2 parámetros para
DownloadString
:fuente
DownloadFile
función que también funciona bien.También puede instalar Git para Windows y luego poner la carpeta bin Git en su ruta. La instalación de Git incluye, entre otras cosas, curl.exe. Después de la instalación, solo pon
%programfiles(x86)%\git\bin
tu RUTA. Luego podrá usar el comando curl desde el símbolo del sistema de Windows o la consola de PowerShell.fuente
Puede instalar cURL con Chocolatey y tener curl disponible en PowerShell CLI o
cmd
.fuente
Lo más parecido a
wget
ocurl
en Windows son los bits (Servicio de transferencia inteligente en segundo plano), que tiene algunos fragmentos listos para powershell.fuente
Este comando debería funcionar:
Es parte de Microsoft.PowerShell.Utility desde PowerShell 3.0.
Consulte también: Obtenga $ webclient.downloadstring para escribir en un archivo de texto en Powershell .
fuente
rizo
cmd, bash
potencia Shell
fuente