PowerShellのInvoke-WebRequestで存在しないディレクトリにファイルをダウンロード

powershell7 コンピュータ
powershell7

Invoke-WebRequestコマンドレットを使うとファイルをダウンロードすることが出来ます。
保存先のファイルのパスが存在しないディレクトリを含む場合どうなるでしょうか?
エラーになるであろうことは予想できます。

PS> Invoke-WebRequest -Uri "https://maywork.net/wp/wp-content/uploads/2023/11/202311051923.jpg" -OutFile H:\hoge\img.jpg
Invoke-WebRequest: Could not find a part of the path 'H:\hoge\img.jpg'.

実際試してみるとやはりエラーとなりました。H:ドライブは存在していますが、hogeディレクトリが無い為エラーになっています。

そうなりますとInvoke-WebRequestを実行する前にファイルの保存先のディレクトリを作成する必要があります。

PS > $dir = (Split-Path H:\hoge\img.jpg); if (-not (Test-Path $dir)) { New-Item -Path $dir -ItemType Directory }

ファイルのパスからディレクトリを取得し、ディレクトリが存在していない場合ディレクトリを作成するようにしています。
回りくどいですが、スクリプトにする場合、ファイルのパスを引数を取る関数にする予定なのでこのような書き方になりました。

保存先のディレクトリが無いケースは、確認するまでも無い様な感じもしますが、予想を裏切ってくれる場合がありますので、念の為確認してみました。

コメント