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 或其他檔案型別。正如所解釋的,它可以是你提供的輸出檔案,如果考慮到正確的格式,它將易於使用,或者下載檔案並將它轉換為可讀格式。
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.