prosource

Powershell - Invoke-WebRequest 사용이 브라우저 다운로드보다 느린 이유는 무엇입니까?

probook 2023. 4. 8. 08:39
반응형

Powershell - Invoke-WebRequest 사용이 브라우저 다운로드보다 느린 이유는 무엇입니까?

Powershell's를 사용합니다.Invoke-WebRequestAmazon S3에서 Windows EC2 인스턴스로 파일을 다운로드하는 방법입니다.

Chrome을 사용하여 파일을 다운로드하면 200MB 파일을 5초 안에 다운로드할 수 있습니다.PowerShell에서 를 사용하여 동일한 다운로드Invoke-WebRequest최대 5분 소요됩니다.

를 사용하는 이유Invoke-WebRequestPowerShell 스크립트에서 최대 속도로 다운로드할 수 있는 방법이 있습니까?

Invoke-WebRequest에서 전환하지 않고 진행 표시줄을 끄면 됩니다.이 스레드에서 답을 찾았습니다.https://github.com/PowerShell/PowerShell/issues/2138 (2016년 10월 3일 자송인 코멘트)

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

localhost에 있는 5MB 파일의 경우 다운로드 시간이 30초에서 250ms로 단축되었습니다.

진행 표시줄을 액티브셸로 되돌리려면$ProgressPreference = 'Continue'.

사용하고 있었습니다.

Invoke-WebRequest $video_url -OutFile $local_video_url

상기의 내용을 로 변경했습니다.

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

이것으로 다운로드 속도가 브라우저에 표시되는 속도로 복원되었습니다.

$ProgressPreference = 'SilentlyContinue'이걸 52분에서 14초로 줄였어요 450M 파일에 대해서요장관이다.

임시 디렉토리에 파일을 다운로드하는 한 줄:

(New-Object Net.WebClient).DownloadFile("https://www.google.com", "$env:temp\index.html")

오늘 이 이슈에 접속했습니다만, 내용을 변경해 주세요.application/octet-stream에 argument를 입력합니다(webclient를 사용하는 경우와 마찬가지로 매우 빠릅니다.그 이유는 Invoke-Request 명령어는 응답을 JSON 또는 XML로 해석하려고 하지 않기 때문입니다.

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

언급URL : https://stackoverflow.com/questions/28682642/powershell-why-is-using-invoke-webrequest-much-slower-than-a-browser-download

반응형