我使用PowerShell的Invoke-WebRequest
方法将文件从Amazon S3下载到我的Windows EC2示例。
如果我使用Chrome下载文件,我可以在5秒内下载一个200MB的文件。在PowerShell中使用Invoke-WebRequest
下载相同的内容最多需要5分钟。
为什么使用Invoke-WebRequest
会更慢,有没有办法在PowerShell脚本中全速下载?
我使用PowerShell的Invoke-WebRequest
方法将文件从Amazon S3下载到我的Windows EC2示例。
如果我使用Chrome下载文件,我可以在5秒内下载一个200MB的文件。在PowerShell中使用Invoke-WebRequest
下载相同的内容最多需要5分钟。
为什么使用Invoke-WebRequest
会更慢,有没有办法在PowerShell脚本中全速下载?
5条答案
按热度按时间dsf9zpds1#
在没有切换到Invoke-WebRequest的情况下,关闭进度条为我做到了这一点。我从这个帖子中找到了答案:https://github.com/PowerShell/PowerShell/issues/2138(jasongin在2016年10月3日评论)
对于我在本地主机上的5MB文件,下载时间从30秒增加到250毫秒。
请注意,要使进度条回到活动的外壳中,您需要调用
$ProgressPreference = 'Continue'
。wqlqzqxt2#
我用的是
我将上面的更改为
这使下载速度恢复到我在浏览器中看到的速度。
g6ll5ycj3#
$ProgressPreference = 'SilentlyContinue'
我把这个从52分钟缩短到了14秒,一个450米的壮观文件。nr9pn0ug4#
将文件下载到临时目录的一行程序:
evrscar25#
我今天才碰到这个问题,如果你把Content Type参数改为应用程序/八位字节-流,速度会快得多(和使用WebClient一样快)。原因是Invoke-Request命令不会尝试将响应解析为JSON或XML。