windows powershell下载文件的4种方式
在windows下使用powershell自带命令下载文件时有以下4种方式:
- Invoke-WebRequest
- Invoke-RestMethod
- Start-BitsTransfer
- System.Net.WebClient
前提,需要powershell 5.1(win10默认就是)
实验,在同一台机器(5G 400Mbps)上下载同一个文件(123MB),查看异同
一、Invoke-WebRequest
可以下载http,https,ftp资源
使用: Invoke-WebRequest -Uri <source> -OutFile <destination>
可以看出,在下载过程中,程序是先读取至内存中的,全部读取完后再写入文件,在读取过程中,文件大小为0
我们再看看下载时长:
1分15秒
二、Invoke-RestMethod
和RestWebRequest类似,区别在于RestMethod支持json和XML内容的代码,会尝试适当的解码器来读取,不支持HTML
使用: Invoke-RestMethod -Uri <source> -OutFile <destination>
再看看时长:
1分31秒
三、Start-BitTransfer
这是windows自带的一个程序, 支持断点续传、下不同文件等,有需要的可以查看后面的参考链接
使用: Start-BitsTransfer -Source $source -Destination $destination
下载过程
与上面不同的是,下载前会先占用磁盘大小,生成tmp文件
时间:
1分35秒
四、System.Net.WebClient
使用:(new-object System.Net.WebClient).DownloadFile('src_url', 'dst_file'))
时长
综上:4种方式下载文件在时间 长差距不大,所以根据所需选用
参考文档:
https://adamtheautomator.com/powershell-download-file/