nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

PowerShellのInvoke-WebRequestのダウンロード速度を改善する

2020.03.15 9:39訂正

👇進捗が表示されて、且つ、ダウンロード速度が改善される方法を教えていただいたので修正。

PowerShellで大きなファイルをダウンロードしようとした場合、ブラウザなどからダウンロードする場合と比較して、非常に遅いことがあります。

これはダウンロード中に進捗をバイト単位でコンソールに表示しているからで、進捗表示を抑制することで大幅に速度を改善することができます。

進捗を非表示にしてもよいのですが、-UseBasicParsingオプションを利用すると進捗が表示されつつ、高速にダウンロードできるようです。

Invoke-WebRequest -UseBasicParsing -Uri https://aka.ms/ssmsfullsetup -OutFile SSMS-Setup-JPN.exe

以下は別解ですが、進捗表示されないので、あまりお勧めではない。

具体的には次のように実行しましょう。

$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://aka.ms/ssmsfullsetup -OutFile SSMS-Setup-JPN.exe

一度サイレントに変更すると、以後適用され続けるため、進捗表示を戻したい場合は次のように戻しましょう。

$ProgressPreference = 'Continue'

参考

stackoverflow.com