PowerShell でファイルをダウンロードする方法

PowerShell でファイルをダウンロードする方法

ユーザーは、重要なデータがあるウェブサイトから CSV ファイルをダウンロードできます。通常、統計情報を含む大きなファイルです。例えば、以下の公開リンクを使用すると、ニュージーランド政府による 2021 年の年次企業調査の CSV ファイルをダウンロードできます。この記事では、同様の機能を Windows PowerShell コマンドを通じて実行する方法を示すために、以下の CSV ファイル URL を使用します。

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 ファイルがユーザーが指定したダウンロードフォルダーに問題なくダウンロードされます。同じ CSV を PowerShell でダウンロードしようとすると、特定のコマンドが必要です。

Windows PowerShell を使ってファイルをダウンロードする

Windows PowerShell を介してファイルをダウンロードするために使用できる基本的なコマンドは Invoke-WebRequest です。

このコマンドを通じて、PowerShell がウェブリクエストを開始します。その後、必要な URL が提供されます。

ここで重要なことは、ウェブリクエストから取得したデータを保存するために出力ファイルが必要であることです。ダウンロードするデータのファイルタイプに応じて、まずファイルタイプを作成する必要があります。私たちの要件として、上記の URL からのウェブリクエストを介して渡されるデータを保存するために.csv タイプのファイルを作成します。

CSV だけでなく、他のファイルタイプもこの方法でダウンロードできることを念頭に置く必要があります。

PowerShell で CSV ファイルをダウンロードするための Invoke-WebRequest の使用

次に、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 またはその他のファイルタイプを簡単にダウンロードできます。説明したように、出力ファイルを指定すれば簡単に使用できるのに加え、正しい形式が考慮されていれば、ファイルをダウンロードして読み取り可能な形式に変換することもできます。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 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.