PowerShellの開発でお困りのことはありませんか?
そんな悩みは
当サイトで解決!!
03.HTTPダウンロードする
UPDATE:2008/05/02
PowerShellでHTTPダウンロードするには、System.Net.WebClient クラスを使用します。
下記は、http://hiros-dot.net/ にあるinedex.htmlファイルを C:\Workにindex.htmlという名前で保存します。
List1
PS > $webClient = new-object System.Net.WebClient PS > $webClient.DownloadFile("http://hirosdot.net/index.html", "C:\Work\index.html")
|
上記を再利用しやすくするために、関数化したものが下記です。
Download-File.ps1
#=============================================================================== # Download-File: HTTPダウンロードする # Param: # $url : ダウンロードするファイルURL # $SaveDir : 保存先ディレクトリ(省略した場合はカレントディレクトリ) # $filename : 保存ファイル名(省略した場合はダウンロードしたファイル名となる) # # ヘルプを見る場合は # Download-File /? # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Download-File { Param ([string]$url, [string]$SaveDir, [string]$filename) #ヘルプの参照か? if ( $url -eq "-?" ) { $helpmsg = @" 書式`r`n Download-File [`$url] [[`$SaveDir]] [[`$filebame]]`r`n パラメータ`r`n `$url ダウンロードするファイルURL`r`n `$SaveDir ダウンロードしたファイルを保存するディレクトリ 省略した場合はカレントディレクトリに保存します`r`n `$filename 保存ファイル名 省略した場合はダウンロードしたフィル名となります`r`n `r`n 使用例`r`n # http://hiros-dot.net/index.html をダウンロードする # この場合はカレントディレクトリに index.html というファイル名で保存される Download-File "http://hiros-dot.net/index.html" #指定したディレクトリに保存する Download-File "http://hiros-dot.net/index.html" "C:\Work" #指定したディレクトリに名前を付けて保存する #この場合は C:\Work に sample1.html という名前で保存する Download-File "http://hiros-dot.net/index.html" "C:\Work" "sample1.html" #ヘルプを参照する Get-DateFileName /? "@ Write-Host $helpmsg return } $webClient = new-object System.Net.WebClient
#保存先が指定されていない場合 if ( $SaveDir.Length -eq 0 ) { #カレントディレクトリを保存先にする $SaveDir = $(get-location).Path } #保存ファイル名が指定されていない場合 if ( $filename.Length -eq 0 ) { #指定されたURLからファイル名を取得 $uri = new-object Uri($url) $filename = $uri.Segments[$uri.Segments.Length-1] } if ( $filename -eq "/" ) { Write-Host "ダウンロードできません。`r`nURLはファイル名を含めて指定してください!!" -foregroundcolor red return }
#保存先パス文字列の作成 $filePath = [System.IO.Path]::Combine($SaveDir, $filename) #ダウンロードする $webClient.DownloadFile($url,$filePath) }
|
この関数の書式は
Download-File ダウンロードするファイルURL 保存先ディレクトリ 保存ファイル名
です。
下記のように、URLだけを指定した場合は、対象ファイルをカレントディレクトリに保存します。
List2
Download-File "http://hiros-dot.net/index.html"
|
URLと保存先だけを指定することもできます。
List3
PS > Download-File "http://hiros-dot.net/index.html" "c:\Work"
|
任意の名前をつけて保存する場合は、第3引数にファイル名を指定します。
List4
PS > Download-File "http://hiros-dot.net/index.html" "C:\Work" "sample1.html"
|
ヘルプの表示は下記のようにします。
List5
PS > Download-File -?
|