Búsqueda de sitios web

¿Cómo descargar un archivo desde una URL en PowerShell?


Un requisito muy común es que podrá descargar un archivo desde una URL en PowerShell. En este tutorial de PowerShell, exploraremos diferentes métodos para descargar archivos desde URL usando PowerShell, brindando ejemplos y scripts completos para cada método.

Para descargar un archivo desde una URL en PowerShell, puede usar el cmdlet Invoke-WebRequest con su parámetro -Uri para la URL del archivo y -OutFile. Parámetro para la ruta de destino. Por ejemplo:

Invoke-WebRequest -Uri "https://powershellfaqs.com/wp-content/uploads/2024/02/TestFile.zip" -OutFile "C:\Bijay\TestFile.zip"

Este resumen es una forma sencilla y eficaz de descargar archivos directamente desde Internet mediante PowerShell.

1. Usando Invocar-WebRequest

El cmdlet Invoke-WebRequest es el método más sencillo para descargar archivos en PowerShell. Es similar a los comandos wget o curl en sistemas Unix/Linux y forma parte de los cmdlets estándar de PowerShell.

Aquí hay un ejemplo de cómo usar Invoke-WebRequest para descargar un archivo usando PowerShell:

# Define the URL and the destination path
$url = "https://powershellfaqs.com/wp-content/uploads/2024/02/TestFile.zip"
$destination = "C:\Bijay\TestFile.zip"

# Use Invoke-WebRequest to download the file
Invoke-WebRequest -Uri $url -OutFile $destination

Este script establece la URL del archivo que desea descargar y la ruta local donde desea guardarlo, luego usa Invoke-WebRequest para descargar el archivo desde la URL al destino especificado.

Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código de Visual Studio.

2. Usando Start-BitsTransfer

Otro método para descargar archivos en PowerShell es utilizar el cmdlet Start-BitsTransfer. Este cmdlet forma parte de BITS (Servicio de transferencia inteligente en segundo plano), que es más robusto y adecuado para transferencias de red. Es especialmente útil para archivos grandes o cuando necesita más control sobre el proceso de transferencia.

Así es como puedes usar Start-BitsTransfer para descargar un archivo en PowerShell:

# Define the source URL and the destination path
$source = "https://powershellfaqs.com/largefile.iso"
$destination = "C:\Bijay\largefile.iso"

# Use Start-BitsTransfer to download the file
Start-BitsTransfer -Source $source -Destination $destination

Este script funciona de manera similar al ejemplo anterior, pero utiliza Start-BitsTransfer para la descarga, lo que puede manejar interrupciones de la red y reanudar las descargas.

3. Usando System.Net.WebClient de nuevo objeto

Para aquellos que prefieren un enfoque más orientado a objetos, pueden utilizar la clase System.Net.WebClient para descargar archivos en PowerShell. Este método proporciona un alto nivel de control sobre el proceso de descarga y le permite manipular encabezados, utilizar servidores proxy y más.

A continuación se muestra un ejemplo que utiliza System.Net.WebClient en PowerShell.

# Create a new WebClient object
$webClient = New-Object System.Net.WebClient

# Define the URL and the destination file
$url = "https://powershellfaqs.com/document.pdf"
$destination = "C:\Bijay\document.pdf"

# Download the file
$webClient.DownloadFile($url, $destination)

Este script crea un objeto WebClient, establece la URL y el destino y luego descarga el archivo con el método DownloadFile.

4. Manejo de conexiones seguras (HTTPS)

Cuando descarga archivos desde conexiones seguras (HTTPS), puede encontrar problemas con los certificados SSL/TLS. Para manejar esto, puede ajustar la configuración de ServicePointManager en PowerShell para omitir la verificación del certificado:

# Ignore SSL/TLS certificate errors (use with caution)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Now proceed with the download using any of the methods above
# Create a new WebClient object
$webClient = New-Object System.Net.WebClient

# Define the URL and the destination file
$url = "https://powershellfaqs.com/document.pdf"
$destination = "C:\Bijay\document.pdf"

# Download the file
$webClient.DownloadFile($url, $destination)

Recuerde que eludir las comprobaciones SSL/TLS puede exponerle a riesgos de seguridad, como ataques de intermediario. Utilice este enfoque sólo cuando esté seguro de la seguridad e integridad de la fuente.

Conclusión

Descargar archivos desde una URL es una tarea común que PowerShell facilita. Puede usar Invoke-WebRequest, Start-BitsTransfer o System.Net.WebClient en PowerShell para descargar un archivo desde una URL en PowerShell.

En este tutorial de PowerShell, he explicado cómo descargar un archivo desde una URL en PowerShell utilizando varios métodos y ejemplos.

Artículos relacionados