Powershellスクリプトにてインターネットからファイルをダウンロードする(プロキシ対応)

Powershellスクリプトでインターネットからファイルをダウンロードする方法について。

1. 動作確認環境

2. やりたいこと

  • インターネットから任意のファイルをダウンロードしたい
  • プロキシサーバ(認証有り)を利用したい
  • ファイル名や格納先は都度指定したい

3. 処理方式

.Net Frameworkの"System.Net.WebClient"クラスを用いて実装する。
具体的には下記の3つのクラスを使用する。

WebClient クラス (System.Net)
WebProxy クラス (System.Net)
NetworkCredential クラス (System.Net)

4. 実装例

以下の様に実装可能。(例外処理は省略)

プロキシサーバが存在しない場合、存在するが認証が不要な場合などはそれぞれ該当処理を削ればOK。

# DL対象ファイルのURL
$target_url = "http://www.hoge.co.jp/test.txt"
# ローカルでの保存先
$file_path = "C:\tmp\test.txt"
# プロキシサーバ
$proxy_url = "http://proxy.hoge.co.jp:8080"
# プロキシ認証アカウント
$user = "testuser"
$pass = "testpass"

# WebClient設定
$web_client = New-Object System.Net.WebClient
$proxy_server = New-Object System.Net.WebProxy($proxy_url, $true)
$credential = New-Object System.Net.NetworkCredential($user, $pass)
$proxy_server.Credentials = $credential
$web_client.Proxy = $proxy_server

# ファイルダウンロード
$web_client.DownloadFile($target_url, $file_path)