29歳、離婚しました。

家事は元妻にまかせっきり。そんな生活力ゼロ男の離婚後の生活を綴ったブログです。著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。

PowerShellを使ってファイルをインターネットからダウンロードする方法

   

このブログでは、アフィリエイト広告を利用しています。

インターネットからのファイルのダウンロードを自動化したい!

日々の業務や、PCのメンテナンス・管理上の都合により、インターネットからファイルのダウンロードを行うことがあります。

このとき、複数のファイルをダウンロードする作業を繰り返し行うケースでは、手動で何度も同様の操作をするのが面倒です。
また何度も同じ操作をしているうちに、操作ミスをしてしまうことも考えられるでしょう。

そこで、インターネットからのファイルのダウンロードを、コマンド操作などにより自動化したい!
と感じている方も、いらっしゃるんじゃないでしょうか。

インターネット上で公開されているファイルを、コマンド操作でダウンロードする方法は、複数存在します。
今回はその中から、PowerShellを使ってインターネット上のファイルをダウンロードする方法を3つご紹介しますので、PowerShellを使った作業の自動化にお役立てください!

WebClientを使ってファイルをインターネットからダウンロードする方法

WebClientを使う方法では、以下のようなコマンドを実行することでファイルをダウンロード可能です。

たとえば、ダウンロードしたいファイルのURLが『https://www.haruru29.net/blog/wp-content/uploads/2018/12/corsair-ml120-pro-led.jpg』。
そしてダウンロードしたファイルの保存先として、『C:\test\corsair-ml120-pro-led.jpg』というパスを指定する場合は、以下のようなコマンドを実行します。

WebClientはPowerShell2.0から利用可能であり、以前のWindows OSでも利用可能な方法と言えます。

Invoke-WebRequestを使ってファイルをインターネットからダウンロードする方法

PowerShell3.0から利用可能となっている『Invoke-WebRequest』コマンドレットでも、ファイルをインターネット上からダウンロード可能です。

こちらもWebClientと同じように、ダウンロードするファイルのURLと保存先ファイルパスを、以下のような構文で指定します。

したがって、ダウンロードしたいファイルのURLが『https://www.haruru29.net/blog/wp-content/uploads/2018/12/corsair-ml120-pro-led.jpg』。
そしてダウンロードしたファイルの保存先として、『C:\test\corsair-ml120-pro-led.jpg』というパスを指定する場合は、以下のようなコマンドを実行してください。

『wget』コマンドも利用可能です!

Linux環境では、インターネット上のファイルをダウンロードする際、『Wget』(またはwget)コマンドを使用することが多いです。

実はこの『wget』コマンドは、PowerShellで実行可能であり、Windows環境でもこのコマンドを使ってファイルをダウンロードできます。

と言いますのも『wget』は、『Invoke-WebRequest』コマンドレットのAlias(別名)としてあらかじめ設定されています。
そのため『wget』コマンドを実行すると、内部的には『Invoke-WebRequest』コマンドレットが実行され、ファイルがダウンロードされる、というわけです。

『Invoke-WebRequest』コマンドレットのAliasであるため、以下のように『Invoke-WebRequest』の部分を『wget』に置き換えた構文で使用します。

また『wget』の他に『iwr』も『Invoke-WebRequest』コマンドレットのAliasとして設定されているため、『wget』の代わりに『iwr』を使用しても構いません。

curl.exeを使ってファイルをインターネットからダウンロードする方法

Linux環境でインターネット上のファイルをダウンロードする際、『wget』コマンドと並んでよく使用されるのが、『cURL』(またはcurl)コマンドです。
そしてWindows 10 1803からは、『curl』コマンドがWindowsに標準搭載されているため、このコマンドを使ってインターネット上のファイルをダウンロードすることも可能です。

『curl』コマンドも、WebClientやInvoke-WebRequestと同じように、ダウンロードするファイルのURLと保存先ファイルパスを、以下のような構文で指定してください。

ダウンロードしたいファイルのURLが『https://www.haruru29.net/blog/wp-content/uploads/2018/12/corsair-ml120-pro-led.jpg』。
ダウンロードしたファイルの保存先として、『C:\test\corsair-ml120-pro-led.jpg』というパスを指定する場合は、以下のようなコマンドを実行します。

『curl.exe』を使用した場合は以下のように、ダウンロード時の進捗状況が表示されるという特徴があります。

PowerShell上で『curl.exe』を使って、ファイルをインターネットからダウンロードしている様子の例

※上記例では、保存先ファイルパスにファイル名のみ指定しているため、カレントディレクトリーにファイルが保存されます。

また、ファイルのダウンロード元URLのファイル名を使用してPCに保存する場合は、以下のような構文でコマンドを実行してください。

この構文を使用すると、ダウンロード元URLのファイル名を使ってカレントディレクトリーにファイルが保存されます。
そのため『C:\test』というファルダーに、ダウンロード元URLのファイル名(corsair-ml120-pro-led.jpg)でファイルをダウンロード・保存したい場合は、以下のようにカレントディレクトリーを保存先フォルダーに変更してから、『curl.exe』を実行してください。

『curl.exe』ではなく『curl』を実行すると、『Invoke-WebRequest』が実行されるので要注意!

先ほど、Linux環境では『curl』コマンドがよく使用される、と記述しています。
ところがWindows PowerShellの実行コマンドの例示では、『curl.exe』を使用していました。

この点について、違和感を感じた方もいらっしゃることでしょう。

実はWindows PowerShellで『curl』と『curl.exe』を実行した場合、内部的な動作が異なります
そしてLinux環境で使用されている『curl』コマンドと同じ動作をするのは、Windows PowerShellにおいては『curl.exe』であるため、『curl.exe』を使った構文を紹介しています。

先に、『Invoke-WebRequest』コマンドレットのAliasとして、『wget』や『iwr』が設定されている、とも書きました。
ですが以下のように、『Invoke-WebRequest』コマンドレットのAliasには、『wget』や『iwr』だけではなく、『curl』も設定されています。

したがってWindows PowerShellで『curl』を実行すると、『Invoke-WebRequest』コマンドレットが実行されてしまう、というわけです。

そしてLinux環境で使用されている『curl』コマンドをWindows PowerShellで実行したい場合には、『curl.exe』を使う必要があるのです。

『curl.exe』はとても便利で、たくさんの機能を持っています。
そのため『curl.exe』を利用できるWindows(Windows 10 1803以後のWindows)環境であれば、ファイルをインターネット上からダウンロードする際は、『curl.exe』の使用をおすすめします。

『curl.exe』で利用できる機能やパラメーターを調べたいときは以下コマンドを実行するか、ネット上の各種情報サイトを確認すると良いでしょう。

以上、参考になさってくださーい!

 - Windows, デジタル・家電, ネットワーク

ピックアップ コンテンツ&スポンサーリンク