PowerShell 下载文件

Migel Hewage Nimesha 2023年2月6日
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

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

这里要注意的重要一点是需要一个输出文件来保存从 Web 请求中检索到的数据。你应该首先创建要从中下载数据的文件类型的文件类型。根据我们的要求,我们创建一个 .csv 类型的文件来保存通过上述 URL 的 Web 请求传递的数据。

有必要记住,不仅 CSV,其他文件类型也可以通过这种方式下载。

在 PowerShell 中使用 Invoke-WebRequest 下载 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 可读应用程序。

但是,如果你的网站需要双因素身份验证或任何其他多因素身份验证系统,那么按照此处所示启动 Web 会话会很麻烦。因此,建议使用个人链接(Personal cloud link - private access)通过 PowerShell 下载文件。

因此,你可以通过上述这些命令通过 PowerShell 轻松下载 CSV 或其他文件类型。正如所解释的,它可以是你提供的输出文件,如果考虑到正确的格式,它将易于使用,或者下载文件并将它转换为可读格式。

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.