当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中从 URL 下载文件 [4 种方法]

作者:精品下载站 日期:2024-12-14 05:27:44 浏览:14 分类:玩电脑

在 PowerShell 中从 URL 下载文件 [4 种方法]


[玩转系统] 在 PowerShell 中从 URL 下载文件 [4 种方法]

使用 Invoke-WebRequest Cmdlet

使用 Invoke-WebRequest cmdlet 将指定文件从指定 URL 下载到计算机中的本地路径。

使用 Invoke-WebRequest Cmdlet:

$URL = "https://github.com/PowerShell/PowerShell"
$LocalPath = "E:\Test\README.md"
Invoke-WebRequest -Uri $URL -OutFile $LocalPath

首先,我们创建了两个名为 $URL$LocalPath 的变量,其中包含 URL 和计算机的本地路径。请注意,在 PowerShell 中,变量以 $ 符号为前缀。接下来,我们使用 Invoke-WebRequest cmdlet 从 URL 下载文件。这里,文件可以是图像、文本、html、markdown 或任何其他文件。

我们使用 Invoke-WebRequest cmdlet 从 Internet 上的指定网页获取内容。此 cmdlet 将 HTTPHTTPSFILEFTP 请求发送到 Web 服务或网页。然后,它解析来自网页的响应并返回链接、图像、文件、表单和其他重要 HTML 元素的集合。要使用此 cmdlet,您必须拥有 PowerShell 版本 3.0 或更高版本。

-URI 参数用于指定我们向其发送 Web 请求的互联网资源的统一资源标识符 (URI)。此参数支持 HTTPHTTPSFILEFTP 值。使用 Inovke-WebRequest cmdlet 需要此参数的值,而我们可以省略参数名称 -URI。请参阅以下示例。

使用 Invoke-WebRequest Cmdlet:

$URL = "https://github.com/PowerShell/PowerShell"
$LocalPath = "E:\Test\README.md"
Invoke-WebRequest $URL -OutFile $LocalPath

接下来,我们使用 -OutFile cmdlet 和 $LocalPath。该cmdlet用于指定输出文件;我们可以在此处提及路径和带有扩展名的文件名。 -OutFile cmdlet 保存给定输出文件的响应正文。如果我们不指定路径,输出文件将保存在当前目录中。

我们还有一个 Invoke-WebRequest cmdlet 的别名,即 iwr,我们可以按如下方式使用它:

使用 Invoke-WebRequest Cmdlet:

$URL = "https://github.com/PowerShell/PowerShell"
$LocalPath = "E:\Test\README.md"
iwr -Uri $URL -OutFile $LocalPath

使用 System.Net.WebClient 类

使用 System.Net.WebClient 类将文件从指定的 URL 下载到计算机中的本地路径。

使用 System.Net.WebClient:

$URL = "https://github.com/PowerShell/PowerShell"
$LocalPath = "E:\Test\README.md"
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($URL, $LocalPath)

创建并初始化 $URL$LocalPath 变量后,我们使用 New-Object cmdlet 创建 WebClient 的对象 类并将其引用保存在 $webClient 变量中。 System.Net.WebClient 为我们提供了常用方法,可用于从统一资源标识符 (URI) 标识的指定资源发送或接收数据。

WebClient 类使用 WebRequest 类提供对给定资源的访问。请注意,WebClient 对象(也称为 WebClient 实例)可以通过使用 WebRequest.RegisterPrefix 方法注册的任何 WebRequest 后代检索数据。默认情况下,支持以 http:ftp:https:file: 方案标识符开头的 URI通过 .NET 框架。

最后,我们使用WebClient类的.DownloadFile()方法将文件从指定的URL下载到本地路径。此方法采用两个参数,一个地址和一个文件名,它们存储在$URL$LocalPath中变量。该方法根据不同的情况生成不同的异常:

  • 如果 filename 参数或 address (URI) 参数为 .DownloadFile() 方法会生成 ArgumentNullException 异常代码>空。当将 null 引用传递给不是有效参数的方法时,将引发 ArgumentNullException

  • 如果同时在多个线程上调用此方法,将会生成 NotSupportedException

  • 由于不同的原因,我们会得到WebException

    • 如果地址无效或者统一资源标识符是由BaseAddress组合而成。

或者

  • 给定的文件名为空、null或不存在

或者

  • 我们在下载数据时遇到错误。

不建议使用WebClient进行新开发。相反,我们可以使用 System.Net.Http.HttpClient 类。

使用 curl 实用程序

使用 curl 实用程序将文件从指定 URL 下载到计算机中的本地路径。

使用卷曲实用程序:

$URL = "https://github.com/PowerShell/PowerShell"
$LocalPath = "E:\Test\README.md"
& curl $URL -OutFile $LocalPath

在上一节中,我们了解了 $URL$LocalPath-OutFile。在这里,我们使用 curl 实用程序从网页下载文件。 & 运算符用于在当前 shell 中运行 curl 命令。

如果您的计算机上未安装curl,则必须先安装它,然后使用它下载文件。

使用 Start-BitsTransfer Cmdlet

使用 Start-BitsTransfer cmdlet 将文件从指定 URL 下载到计算机中的本地路径。

使用 Start-BitsTransfer Cmdlet:

$URL = "https://download.microsoft.com/download/8/8/0/880BCA75-79DD-466A-927D-1ABF1F5454B0/PBIDesktopSetup.exe"
$LocalPath = "E:\Test\PBIDesktopSetup.exe"
$startTime = Get-Date
Import-Module BitsTransfer
Start-BitsTransfer -Source $URL -Destination $LocalPath

在上面的代码中,我们导入了 BitsTransfer 模块并使用 Start-BitsTransfer cmdlet 将指定文件从源传输到目标。我们还使用 Get-Date cmdlet 记录了开始时间,并将其存储在 $startTime 变量中,我们可以使用该变量将当前时间与 $进行比较startTime 来确定完成此传输需要多长时间。

Start-BitsTransfer cmdlet 用于创建 BITS(后台智能传输服务)传输作业,以在服务器和客户端计算机之间传输一个或多个文件。此 cmdlet 帮助我们将多个文件从指定的服务器下载到给定的客户端计算机,但它不允许我们将多个文件从客户端计算机上传到服务器。如果需要上传多个文件,我们可以使用 Import-Csv 将输出通过管道传输到 Add-BitsFile cmdlet 或考虑使用压缩文件 (.zip )或压缩文件(.cab)。

BITS 是操作系统的组件,可通过网络可靠、可扩展且高效地传输大型文件。我们经常使用它在后台传输文件,这样即使传输被中断或系统重新启动,我们也可以暂停、恢复和重新启动传输。我们在使用 Start-BitsTransfer cmdlet 时使用 -Source-Destination 参数指定文件的源和目标。我们还可以使用各种传输选项,例如传输类型和优先级等。

现在,我们已经了解了使用 PowerShell 从网页下载文件的各种方法,因此有必要了解每种方法的优缺点。

比较上述所有解决方案

Invoke-WebRequest

优点:由于语法简单,易于使用,可以处理大文件,并用于从网站检索数据。
缺点:它不为我们提供控制下载过程的高级选项。

System.Net.WebClient

优点:这是一种用于下载文件的传统方法,为我们提供了控制下载过程的基本选项,例如代理和超时设置。
缺点: 它不像 `Invoke-WebRequest` 那样灵活。

curl

优点:它是最简单、最流行的数据传输命令行工具,支持不同的协议(FTP、HTTP 等),并用于执行复杂的操作,例如文件上传。
缺点:您可能必须在计算机上安装此实用程序。 PowerShell 用户可能需要更加熟悉其语法。

Start-BitsTransfer

优点:它是 BITS 的一部分,在下载文件时提供高级选项,例如暂停/恢复/重新启动下载。
缺点:它不如 System.Net.WebClient 类和 Invoke-WebRequest cmdlet 常用。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯