cURL es una herramienta de intérprete de comandos que permite transferencias vía sintaxis URI que es muy popular entre los administradores de sistemas Unix/Linux, porque permite transferencias HTTP, HTTPS, FTP, telnet, etc. Uno de los usos dentro del mundo Linux más habitual es la descarga de paquetes o archivos que se encuentran disponibles en formato HTTP en sistemas sin entorno gráfico y por tanto, sin el típico navegador web.
En entornos Windows nos puede parecer una herramienta no muy útil, pero si pensamos tanto en scripts como en entornos server core, sí que nos proporciona una gran utilidad. Si bien tenemos cURL disponible en versión para Windows y herramientas similares, PowerShell 3.0 y 4.0 nos proporcionan una agradable sorpresa, tiene disponible el comando curl. De hecho, no es más que un alias del CmdLets Invoke-WebRequest que facilita el uso de la herramienta para usuarios acostumbrados a entornos Linux. De hecho, también funcionarán como alias iwr y wget.
Si abrimos en nuestro sistema Windows 8 una ventana con PowerShell y ejecutamos curl, veremos que nos pregunta la URI a la que queremos conectar. Una vez lo hacemos, nos muestra el contenido de la transacción HTTP realizada.
Obviamente, no parece un uso muy útil, pero si miramos las opciones que disponemos la cosa cambia. Como cualquier comando de PowerShell, para acceder a la ayuda:
1 |
Get-Help Invoke-WebRequest |
Vemos las diferentes opciones del comando, que realmente son completas, ya que permite especificar un gran número de opciones.
En nuestro caso, vamos a ver un caso sencillo, donde queremos descargar archivos que se encuentran en una página web, para ello simplemente especificaremos la URI completa del recurso (en un script podría ser una variable) y el destino donde queremos guardar dicho archivo:
1 |
Invoke-WebRequest http://pixabay.com/get/0a1c2b7862cb70d7ec9c/1406541063/summer-244293_1280.jpg -OutFile c:\temp\sunrise.jpg |
En este caso, descargará la imagen en nuestro ordenador, en la ubicación indicada y con el nombre sunrise.jpg
En Technet se encuentra documentación muy detallada sobre este CmdLet.
Saludos