如何在 PowerShell 中下载文件

如何在 PowerShell 中下载文件

用户可以从包含重要数据的网站下载 CSV 文件,通常这些文件很大,包含统计信息。例如,下面公开可用的链接将让您下载新西兰政府的 2021 年年度企业调查的 CSV 文件。我们将在本文中使用以下 CSV 文件 URL 来演示如何通过 Windows PowerShell 命令执行类似操作。

https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2020-financial-year-provisional/Download-data/annual-enterprise-survey-2020-financial-year-provisional-csv.csv

Windows PowerShell 是一种脚本解决方案,运行在命令行指令上,向 Windows 用户提供了类似 Unix 命令行系统的灵活性。此外,Mac 用户也可以使用 PowerShell 的一个版本(命令的使用方式与 Windows 略有不同)。

在普通网页浏览器中,URL 会直接将 CSV 文件下载到用户指定的下载文件夹,而没有任何问题。当您尝试在 PowerShell 中下载相同的 CSV 时,需要某些命令。

通过 Windows PowerShell 下载文件

可以用来通过 Windows PowerShell 下载文件的基本命令是 Invoke-WebRequest

通过此命令,PowerShell 发起一个网络请求。然后提供所需的 URL。

这里需要注意的重要事项是需要一个输出文件来保存通过网络请求检索的数据。您应该首先创建一个与您打算下载数据的文件类型相对应的文件类型。按照我们的要求,我们创建一个.csv 类型的文件来保存从上述 URL 通过网络请求传递的数据。

需要记住,除了 CSV 之外,其他文件类型也可以以这种方式下载。

使用 Invoke-WebRequest 在 PowerShell 中下载 CSV 文件

然后可以按以下方式使用 Invoke-WebRequest

Invoke-WebRequest URL -OutFile File_path

在这里,-OutFile 将是用于保存来自在线 CSV 文件数据的文件。

下面显示了使用我们的示例 URL 的完整执行过程。

Invoke-WebRequest https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2020-financial-year-provisional/Download-data/annual-enterprise-survey-2020-financial-year-provisional-csv.csv -OutFile .\SaveCSV.csv

在 PowerShell 中的输出将看到下面的脚本在操作完成之前运行。

Writing web request                                                                                                
Writing request stream... (Number of bytes written: 33451654)

上述执行的输出与您直接下载的文件相似。

然而,使用 Invoke-WebRequest 有一些限制。当网站需要简单的基于密码的身份验证时,需要在 Invoke-WebRequest 中包含您的登录详细信息。

Invoke-WebRequest URL -Add your lgin information- -SessionVariable MyNewSession

当您运行上述流时,您将看到以下脚本运行,直到下载完成。

Writing web request                                                                                                Writing request stream... (Number of bytes written: 1474178)

然后它将为您创建一个网络会话并下载所需的文件。文件将为.cs 格式,您可以将其更改为.csv 格式,以便与任何.csv 可读的应用程序兼容。

但如果您的网站需要双因素身份验证或任何其他多因素身份验证系统,按照此处指示的方式发起网络会话将会很麻烦。因此,建议使用个人链接(个人云链接 - 私有访问)通过 PowerShell 下载文件。

因此,您可以通过上述命令轻松地通过 PowerShell 下载 CSV 或其他文件类型。如上所述,这将是到您提供的输出文件,考虑到正确格式后会很容易使用,或下载文件后将其转换为可读格式。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.