Invoke-WebRequest: cURL en PowerShell

por | 28 julio, 2014

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.

curl01

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:

curl02

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:

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *