如何在 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 命令行系統的靈活性。此外,PowerShell 的版本也可供 Mac 用戶使用(命令的使用將與 Windows 略有不同)。
在普通的網頁瀏覽器中,該 URL 會直接將 CSV 文件下載到用戶指定的下載文件夾,沒有任何問題。當您嘗試在 PowerShell 中下載相同的 CSV 時,需要某些命令。
通過 Windows PowerShell 下載文件
可以用來通過 Windows PowerShell 下載文件的基本命令是 Invoke-WebRequest
。
通過此命令,PowerShell 發起一個網絡請求。然後提供所需的 URL。
這裡需要注意的重要事項是,需要一個輸出文件來保存從網絡請求中檢索到的數據。您應該首先創建一個類型為您打算從中下載數據的文件的文件類型。根據我們的需求,我們創建一個.csv 類型的文件來保存從上面 URL 的網絡請求中傳遞的數據。
需要記住的是,不僅僅是 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 的應用程序一起使用。
但如果您的網站需要兩步驗證或其他多重身份驗證系統,按照這裡所示的方式啟動網絡會話將會麻煩。因此,建議使用個人鏈接(個人雲鏈接 - 私人訪問)通過 PowerShell 下載文件。
因此,您可以通過上述命令輕鬆地通過 PowerShell 下載 CSV 或其他文件類型。如上所述,它將是輸出的文件,您提供的文件將易於使用,前提是考慮到正確的格式,或者下載文件並將其轉換為可讀格式。
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.