【2023年】これからブログを始める人へおすすめの書籍

Kissy

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

作成: 更新:

PowerShellでインターネットからファイルをダウンロード
PowerShellでインターネットからファイルをダウンロードする方法を紹介します。

PowerShellだとほんの数行でファイルのダウンロードができてしまいます。とても便利ですので是非試してみてください。

使用上の注意

まず、このソースコードを利用する上で注意事項があります。

プログラムでインターネットからファイルをダウンロードするということは、Webサーバーへアクセスすることになります。

プログラムですから、多数のファイルを高速でダウンロードすることも簡単ですが、こういった行為はWebサーバーへの攻撃とみなされてしまう可能性があります。

そのため、1ファイルごとにスリープ(Start-Sleepコマンドレッド)を入れる等して、マナーを守って利用しましょう。

ソースコード

まずはソースコードからです。

# ダウンロードするファイルのURL
$url = "http://hoge/img/xxx.png"

# ダウンロードファイルを格納するフォルダ
$tempPath = "C:\Temp"

# URIからファイル名を取得する
$uri = New-Object System.Uri($url)
$fileName = Split-Path $uri.AbsolutePath -Leaf

# ファイルをダウンロードする
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($uri, (Join-Path -Path $tempPath -ChildPath $fileName))

# ファイルをダウンロードする毎に1秒スリープする
Start-Sleep -Seconds 1

解説

ファイルのURLと保存先を定義する

# ダウンロードするファイルのURL
$url = "http://hoge/img/xxx.png"

# ダウンロードファイルを格納するフォルダ
$tempPath = "C:\Temp"

ダウンロードするファイルのURLと、保存先のフォルダパスを定義しています。

保存するファイル名を取得する

# URIからファイル名を取得する
$uri = New-Object System.Uri($url)
$fileName = Split-Path $uri.AbsolutePath -Leaf

ダウンロードしたファイルのファイル名を、URLのファイル名と同一にするため、URLからファイル名のみを取り出しています。

ファイルをダウンロードする

# ファイルをダウンロードする
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($uri, (Join-Path -Path $tempPath -ChildPath $fileName))

WebClientというインターネットへ接続するオブジェクトを生成し、DownloadFileメソッドでファイルをダウンロードします。

DownloadFileメソッドの第1引数は、ダウンロードするファイルのURLになります。

DownloadFileメソッドの第2引数は、ダウンロードしたファイルを保存する先のパスになります。ここでは、保存先のフォルダとURLのファイル名をJoin-Pathで結合してパスを生成しています。

これでファイルがダウンロードされます!

攻撃とみなされないようにスリープする

# ファイルをダウンロードする毎に1秒スリープする
Start-Sleep -Seconds 1

上のサンプルでは1ファイルしかダウンロードしていないので、意味がないですが念のためダウンロード毎にスリープしましょう。

ここでは1秒のスリープを入れています。

どの程度スリープすれば攻撃とみなされないかは、難しいところです。長めのスリープを入れていても、大量のファイルを一度にダウンロードすれば、攻撃とみなされるかもしれません。

節度を持って利用しましょう。

最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。

関連記事

SPONSORED LINK
SPONSORED LINK