reconoce headers powershell amazon-ec2 amazon-s3 powershell-v3.0

powershell - headers - invoke-webrequest no se reconoce



Powershell: ¿Por qué usar Invoke-WebRequest es mucho más lento que una descarga del navegador? (4)

Invoke-WebRequest método Invoke-WebRequest para descargar un archivo de Amazon S3 a mi instancia de Windows EC2.

Si descargo el archivo usando Chrome, puedo descargar un archivo de 200 MB en 5 segundos. La misma descarga en PowerShell utilizando Invoke-WebRequest toma hasta 5 minutos.

¿Por qué el uso de Invoke-WebRequest más lento y hay una manera de descargar a toda velocidad en un script de PowerShell?


Acabo de abordar este tema hoy, si cambias el argumento ContentType a application / octet-stream es mucho más rápido (tan rápido como usar webclient). La razón es porque el comando Invoke-Request no intentará analizar la respuesta como JSON o XML.

Invoke-RestMethod -ContentType "application/octet-stream" -Uri $video_url -OutFile $local_video_url


Estaba usando

Invoke-WebRequest $video_url -OutFile $local_video_url

Cambié lo anterior a

$wc = New-Object net.webclient $wc.Downloadfile($video_url, $local_video_url)

Esto restauró la velocidad de descarga a lo que estaba viendo en mis navegadores.


Sin cambiar de Invoke-WebRequest, apagar la barra de progreso lo hizo por mí. Encontré la respuesta de este hilo: https://github.com/PowerShell/PowerShell/issues/2138 (jasongin comentado el 3 de octubre de 2016)

$ProgressPreference = ''SilentlyContinue'' Invoke-WebRequest <params>

Para mi archivo de 5MB en localhost, el tiempo de descarga pasó de 30 a 250 ms.

Tenga en cuenta que para volver a colocar la barra de progreso en el shell activo, debe llamar a $ProgressPreference = ''Continue'' .


Supongo que el razonamiento detrás de por qué Invoke-WebRequest es más lento es haciendo un análisis de estilo raspador de la página que está solicitando, mientras que el cliente web .NET solo está emitiendo una solicitud get y guardando la respuesta.

Invoke-WebRequest analiza las propiedades Content, ParsedHtml, Forms, InputFields, Links, Images, Scripts, AllElements, BaseResponse y StatusCode.

Muy buen article sobre raspado con Invoke-WebRequest.