使用 PowerShell 下载文件的 5 种简单方法

PowerShell 提供了多种灵活的方式用于下载文件(如从 HTTP/HTTPS、FTP 等协议下载),无论是临时下载、脚本自动化,还是需要进度条、断点续传等功能,都能找到合适的方案。以下是 ​5 种最简单且常用的 PowerShell 文件下载方法,涵盖不同场景和需求。

图片[1]_使用 PowerShell 下载文件的 5 种简单方法_知途无界

方法 1:使用 Invoke-WebRequest(推荐,功能全面)

适用场景​:通用 HTTP/HTTPS 下载,支持进度条、自动处理重定向、提取文件内容等,是 PowerShell 3.0 及以上版本中最常用的下载命令。

基本语法:

Invoke-WebRequest -Uri "下载链接" -OutFile "保存路径"

示例:下载图片并保存到本地

Invoke-WebRequest -Uri "https://example.com/image.jpg" -OutFile "C:\Downloads\image.jpg"

常用参数:

  • -Uri:文件的下载链接(HTTP/HTTPS/FTP 等,但 FTP 需注意兼容性)。
  • -OutFile:指定文件保存的本地路径(如 C:\Users\YourName\Downloads\file.zip)。
  • -UseBasicParsing:在旧系统(如 Windows 7 默认 PowerShell 2.0)中避免 HTML 解析警告(PowerShell 5.1+ 通常不需要)。
  • -TimeoutSec:设置超时时间(单位:秒),例如 -TimeoutSec 30

显示下载进度(默认自带):

Invoke-WebRequest 会在控制台显示实时的下载进度条,无需额外配置。


方法 2:使用 Invoke-RestMethod(适合 API/文本类文件)

适用场景​:主要用于下载 ​API 返回的数据(如 JSON/XML)或文本文件,本质是 Invoke-WebRequest 的简化版,但默认只返回内容(不包含响应头等元数据)。如果目标是下载普通文件(如 ZIP、图片),也可用,但通常优先用 Invoke-WebRequest

基本语法:

Invoke-RestMethod -Uri "下载链接" -OutFile "保存路径"

示例:下载文本文件

Invoke-RestMethod -Uri "https://example.com/data.txt" -OutFile "C:\Downloads\data.txt"

注意:

  • 如果下载的是二进制文件(如图片、压缩包),虽然能用,但更推荐 Invoke-WebRequest(因为 Invoke-RestMethod 设计初衷是处理结构化数据)。
  • 默认不显示进度条(若需要进度,优先选方法 1)。

方法 3:使用 System.Net.WebClient(传统 .NET 方法,兼容性强)

适用场景​:适合所有 PowerShell 版本(包括旧版如 2.0),通过 .NET 类实现下载,语法简单,但功能较基础(无内置进度条,需手动实现)。

基本语法:

$client = New-Object System.Net.WebClient
$client.DownloadFile("下载链接", "保存路径")

示例:下载文件

$client = New-Object System.Net.WebClient
$client.DownloadFile("https://example.com/document.pdf", "C:\Downloads\document.pdf")

优点:

  • 兼容 PowerShell 2.0 及更早版本(只要系统有 .NET Framework)。
  • 代码简洁,适合快速脚本。

缺点:

  • 无内置进度条​(需通过事件订阅实现,较复杂)。
  • 不支持自动重定向等高级特性(但基本下载够用)。

方法 4:使用 Start-BitsTransfer(后台传输,支持断点续传)

适用场景​:适合大文件下载(如软件安装包、视频等),基于 Windows 的 ​BITS(Background Intelligent Transfer Service)服务,支持 ​后台下载、断点续传、带宽限制,但仅限 ​HTTP/HTTPS/FTP​ 协议,且需要目标服务器支持 BITS。

基本语法:

Start-BitsTransfer -Source "下载链接" -Destination "保存路径"

示例:下载大文件(后台静默传输)

Start-BitsTransfer -Source "https://example.com/largefile.zip" -Destination "C:\Downloads\largefile.zip"

常用参数:

  • -Source:下载链接(必须为 HTTP/HTTPS/FTP)。
  • -Destination:本地保存路径。
  • -DisplayName:为传输任务指定名称(方便管理)。
  • -Priority:设置优先级(如 High/Normal/Low)。
  • -Description:添加任务描述。

优点:

  • 后台下载​(不占用当前 PowerShell 窗口)。
  • 断点续传​(网络中断后可恢复)。
  • 自动处理身份验证​(如需要)。

缺点:

  • 仅支持 HTTP/HTTPS/FTP(不支持其他协议如 SFTP)。
  • 依赖 Windows 系统的 BITS 服务(通常默认启用)。

方法 5:使用 curlwget(Windows 10/11 自带,兼容 Linux 习惯)

适用场景​:如果你熟悉 Linux 的 curlwget 命令,Windows 10/11 及 PowerShell 5.1+ 已内置这两个工具(无需安装),可直接在 PowerShell 中使用。

(1)使用 curl(注意:Windows 自带的 curl 是别名,实际调用的是 Invoke-WebRequest 的简化版)

curl -L -o "保存路径" "下载链接"
  • -L:跟随重定向(重要!)。
  • -o:指定输出文件路径(注意是 -o 不是 -OutFile)。

示例:

curl -L -o "C:\Downloads\example.zip" "https://example.com/example.zip"

(2)使用 wget(同样为内置别名,功能类似)

wget -O "保存路径" "下载链接"
  • -O:指定输出文件路径。

示例:

wget -O "C:\Downloads\example.zip" "https://example.com/example.zip"

注意:

  • Windows 自带的 curlwget 是 ​命令行工具的别名​(实际调用的是 Invoke-WebRequest/System.Net.WebClient 的简化逻辑),功能可能不如原生 Linux 版强大。
  • 如果遇到问题(如重定向失败),推荐优先用 Invoke-WebRequest(方法 1)。

总结对比表

方法命令/工具适用场景是否显示进度条支持协议备注
方法 1Invoke-WebRequest通用 HTTP/HTTPS 下载(推荐)✅ 默认显示HTTP/HTTPS(部分 FTP)功能全面,支持重定向、自动解析,PowerShell 3.0+
方法 2Invoke-RestMethodAPI/文本文件下载❌ 无进度条HTTP/HTTPS适合结构化数据(如 JSON/XML),文件下载可用但不常用
方法 3System.Net.WebClient兼容旧版 PowerShell(2.0+)❌ 无进度条HTTP/HTTPS/FTP传统 .NET 方法,代码简单但功能基础
方法 4Start-BitsTransfer大文件/后台下载(支持断点续传)❌ 无进度条(后台运行)HTTP/HTTPS/FTP依赖 BITS 服务,适合大文件或不稳定网络
方法 5curl / wget熟悉 Linux 命令的用户❌(默认无,需参数)HTTP/HTTPS(部分 FTP)Windows 10/11 自带,本质是别名(推荐优先用方法 1)

📌 推荐选择

  • 大多数场景(推荐)​​:使用 ​**Invoke-WebRequest(方法 1)​**​ —— 功能全面、语法简单、支持进度条,适合 HTTP/HTTPS 下载。
  • 大文件或需要断点续传​:使用 ​**Start-BitsTransfer(方法 4)​**​ —— 后台下载、自动续传,适合不稳定网络环境。
  • 兼容旧系统(如 PowerShell 2.0)​​:使用 ​**System.Net.WebClient(方法 3)​**​ —— 无需额外依赖,但无进度条。
  • 熟悉 Linux 命令​:可尝试 ​**curl -L -owget -O(方法 5)​**,但优先推荐原生 PowerShell 命令。

根据你的具体需求(如是否需要进度、文件大小、网络环境),选择最适合的方法即可!

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞76 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容