Powershellスクリプトにてインターネットからファイルをダウンロードする(プロキシ対応)
Powershellスクリプトでインターネットからファイルをダウンロードする方法について。
1. 動作確認環境
- Windows 8.1
- Powershell 4.0
- .NET Framework 4.5.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)