Un módulo PowerShell para descargar archivos.
Invoke-WebRequest requiere que suministre el nombre de archivo de salida, que es posible que no conozca de antemano, y no siempre es posible extraerlo de la URL.
También contiene todo el archivo en la memoria mientras se descarga, lo cual es una mala noticia si descarga archivos grandes.
No conservará la fecha modificada del archivo fuente original como lo hacen muchos navegadores.
Además (en Windows PowerShell con $ ProgressPreference establecido como predeterminado), la barra de progreso se actualiza con tanta frecuencia que ralentiza drásticamente la descarga.
Start-BitStransfer puede determinar el nombre del archivo automáticamente, pero no funciona para todas las URL y solo se admite en Windows.
Algunas URL requieren que diferentes agentes de usuarios se conecten con éxito.
Este módulo resuelve estos problemas:
Utiliza la clase .NET HTTPClient (que ahora se recomienda usar por Microsoft a través de la clase WebClient ahora desactivada).
Primero intentará tomar el nombre del archivo del encabezado de discosición de contenido. Los encabezados se obtienen mediante una solicitud GET regular (ya que se ha demostrado que algunos servidores web rechazan las solicitudes de la cabeza). Si este encabezado no está presente, extraerá el nombre del archivo de la URL absoluta (ya que la URL suministrada puede redirigir en otro lugar).
El archivo se transmite directamente al disco en lugar de mantenerlo completamente en la memoria.
La fecha modificada se actualizará una vez que la descarga se haya completado para que coincida con el último encabezado modificado si se encuentra.
La barra de progreso se limita a actualizar cada 250 ms para evitar el uso excesivo de los recursos del sistema.
Las cadenas de agentes de usuario para Chrome y GoogleBot Web Crawler se intentarán de manera predeterminada.
Instale desde la Galería PowerShell ejecutando el siguiente comando:
Install -module -name elload
Resolve-uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
Esto devolverá el URI absoluto (el URI redirigido), así como el nombre de archivo, el tamaño del archivo y la última fecha modificada si están disponibles en los encabezados de respuesta.
Invoke -Download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -destination "$ env: userProfilleDownloads"
Esto descargará el archivo a la carpeta de descargas.
La entrada de la tubería también es compatible:
"https://aka.ms/vs/17/release/vc_redist.x64.exe","https://aka.ms/vs/17/release/vc_redist.x86.exe" | Invoke -Download -Destination "$ Env: UserProfidoNownloads"
URL también se acepta como un alias de URI .
Parámetros opcionales:
Nombre del archivo
Use esto para anular el nombre del archivo en lugar de intentar detectar automáticamente.
Usuario
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebkit/537.36 (KHTML, como gecko) Chrome/116.0.0.0 Safari/537.36
Googlebot/2.1 (+http: //www.google.com/bot.html)
Anular el agente de usuario predeterminado. De forma predeterminada, se volverá en bicicleta al usar:
Encabezado
El valor predeterminado es @{'Acept' = ' / '}, que es necesario para engañar a algunos servidores para que sirvan una descarga, como desde FileZilla.
TEMPPATH
De forma predeterminada, la descarga en progreso se guardará en % temps de temperatura / $ env: temp.
Ignorado
Ignore el encabezado modificado con fecha, modificado será la fecha en que se descargó el archivo.
Archivo de bloques
Marque el archivo como se descarga de Internet (por defecto, no lo hace).
Noclobber
Use esto para evitar sobrescribir un archivo existente.
NOPROGRO
Suprimir la barra de progreso.
Pase
Devuelve un objeto FileInfo a la tubería para el archivo descargado.
Esto se ha probado con una gran cantidad de URL, envíe un problema si no puede descargar un archivo específico. Tenga en cuenta que algunas páginas web pueden ejecutar algunos JavaScript para activar la descarga real. Este tipo de URL no es compatible, debe apuntar directamente a un recurso sin la necesidad de ejecutar ningún script del lado del cliente.