Cómo descargar un archivo en PowerShell

Cómo descargar un archivo en PowerShell

Los usuarios pueden descargar archivos CSV de sitios web donde hay datos importantes, generalmente archivos grandes con información estadística. Por ejemplo, el enlace público disponible a continuación te permitiría descargar el archivo CSV de la Encuesta Anual de Empresas - 2021 por el Gobierno de Nueva Zelanda. Usaremos la siguiente URL del archivo CSV en este artículo para demostrar cómo hacer una función similar a través de comandos de Windows PowerShell.

https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2020-financial-year-provisional/Download-data/annual-enterprise-survey-2020-financial-year-provisional-csv.csv

Windows PowerShell es una solución de scripting, que se ejecuta en instrucciones de línea de comandos para proporcionar flexibilidad similar a los sistemas basados en la línea de comandos tipo Unix para los usuarios de Windows. Además, hay una versión de PowerShell disponible para usuarios de Mac (El uso de comandos sería ligeramente diferente al de Windows).

En un navegador web normal, la URL descarga directamente el archivo CSV a la carpeta de descargas especificada por el usuario, sin problemas. Cuando intentas descargar el mismo CSV en PowerShell, se requieren ciertos comandos.

Descargar un archivo a través de Windows PowerShell

El comando básico que se puede usar para descargar un archivo a través de Windows PowerShell es Invoke-WebRequest.

A través de este comando, una solicitud web PowerShell inicia una solicitud web. Luego se proporciona la URL requerida.

Lo importante a tener en cuenta aquí es la necesidad de un archivo de salida para guardar los datos recuperados de la solicitud web. Primero debes crear un archivo del tipo del archivo del cual pretendes descargar datos. Según nuestro requerimiento, creamos un archivo de tipo .csv para guardar los datos transmitidos a través de la solicitud web desde la URL anterior.

Es necesario tener en cuenta que no solo se pueden descargar archivos CSV, sino también otros tipos de archivos de esta manera.

Usando Invoke-WebRequest para descargar un archivo CSV en PowerShell

Entonces, Invoke-WebRequest se puede usar de la siguiente manera.

Invoke-WebRequest URL -OutFile File_path

Aquí, -OutFile sería el archivo para guardar datos del archivo CSV en línea.

A continuación se muestra la ejecución completa con nuestra URL de ejemplo.

Invoke-WebRequest https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2020-financial-year-provisional/Download-data/annual-enterprise-survey-2020-financial-year-provisional-csv.csv -OutFile .\SaveCSV.csv

Como salida en PowerShell, verías el siguiente script ejecutándose hasta que la acción se complete.

Writing web request                                                                                                
Writing request stream... (Number of bytes written: 33451654)

La salida de la ejecución anterior es similar al archivo que descargarías directamente.

Sin embargo, hay limitaciones al usar este Invoke-WebRequest. Cuando el sitio web requiere una autenticación simple basada en contraseña, se requiere incluir tus datos de inicio de sesión y el Invoke-WebRequest.

Invoke-WebRequest URL -Add your lgin information- -SessionVariable MyNewSession

Verás el siguiente script ejecutándose cuando corras el flujo anterior hasta que la descarga se complete.

Writing web request                                                                                                Writing request stream... (Number of bytes written: 1474178)

Entonces crearía una sesión web para ti y descargaría el archivo requerido. Estaría en formato .cs, que puedes cambiar a formato .csv para hacerlo utilizable con cualquier aplicación que lea .csv.

Pero si tu sitio web requiere autenticación de dos factores, o cualquier otro sistema de autenticación multifactorial, iniciar la sesión web como se indicó aquí sería problemático. Por lo tanto, se aconseja utilizar un enlace personal (enlace de nube personal - acceso privado) para descargar el archivo a través de PowerShell.

Por lo tanto, puedes descargar fácilmente el CSV u otros tipos de archivos a través de PowerShell mediante estos comandos anteriores. Como se explicó, sería ya sea a un archivo de salida que proporcionaste, que sería fácil de usar, dado que se considera el formato correcto, o descargar el archivo y convertirlo a un formato legible.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.