用于下载文件的PowerShell模块。
Invoke-webrequest要求您提供输出文件名,您可能不提前知道,并且并非总是可以从URL中提取它。
它还在下载时将整个文件保存在内存中,如果下载大文件,这是个坏消息。
它不会像许多浏览器那样保留原始源文件的修改日期。
另外(在Windows PowerShell上,$ progressPreference设置为默认值)进度栏被如此频繁地更新,以至于下载大大减慢了下载。
start-bittransfer可以自动确定文件名,但对所有URL都不起作用,仅在Windows上支持。
有些URL需要成功连接不同的用户代理。
该模块解决了这些问题:
它使用.NET HTTPCLIENT类(现在建议通过Microsoft在现在不屑一顾的WebClient类中使用)。
它将首先尝试从内容分配标题中获取文件名。标题是通过常规获取请求获得的(因为一些Web服务器已被证明可以拒绝头部请求)。如果此标头不存在,它将从绝对URL提取文件名(因为所提供的URL可能会将其重定向到其他地方)。
该文件直接流到磁盘上,而不是将其完全保存在内存中。
下载完成后,修改日期将更新以匹配最后修饰的标头(如果发现)。
进度栏仅限于每250ms更新一次,以防止过度使用系统资源。
默认情况下,将尝试使用Chrome和Googlebot Web爬网的用户代理字符串。
通过运行以下命令从PowerShell画廊安装:
安装模块-NAME PSDOWNLOAD
resolve-uri“ https://aka.ms/vs/17/release/vc_redist.x64.exe”
这将返回绝对URI(重定向的URI),以及文件名,文件大小和最后一个修改日期(如果可从响应标头获得)。
Indoke -download -uri“ https://aka.ms/vs/17/release/vc_redist.x64.exe” -destination“ $ envinati
这将将文件下载到下载文件夹。
还支持管道输入:
“ https://aka.ms/vs/17/release/vc_redist.x64.exe",“https://aka.ms/vs/17/release/release/vc_redist.x86.exe” |调用 - download -destination“ $ env:userprofiledownloads”
URL也被接受为URI的别名。
可选参数:
文件名
使用它来覆盖文件名而不是尝试自动检测。
用户
Mozilla/5.0(Windows NT 10.0; Win64; X64)AppleWebkit/537.36(Khtml,像Gecko一样)Chrome/116.0.0.0.0.0 Safari/537.36
GoogleBot/2.1(+http://www.google.com/bot.html)
覆盖默认用户代理。默认情况下,它将通过使用以下方式循环:
标题
默认值为 @{'Accept'=' / '},需要欺骗某些服务器提供下载,例如来自Filezilla。
Temppath
默认情况下,正在进行的下载将保存到%temp% / $ env:temp。
忽略
忽略日期修饰的标头,修改将是文件下载的日期。
blockfile
将文件标记为从Internet下载的文件(默认情况下它不执行此操作)。
Noclobber
用它来防止覆盖现有文件。
Noprogress
抑制进度条。
通过
将FileInfo对象返回到下载文件的管道中。
已经针对大量URL进行了测试,如果无法下载特定文件,请提交问题。请注意,某些网页可能会运行一些JavaScript以触发实际下载。不支持这种类型的URL,它必须直接指向资源,而无需执行任何客户端脚本。