ファイルをダウンロードするためのPowerShellモジュール。
Invoke-WebRequestでは、出力ファイル名を提供する必要がありますが、事前に知られていない場合があり、URLから抽出することは常に可能ではありません。
また、ダウンロード中にファイル全体をメモリに保持します。これは、大きなファイルをダウンロードする場合は悪いニュースです。
多くのブラウザが行うように、元のソースファイルの変更された日付は保持されません。
また、($ progresspreferenceセットをデフォルトに設定したWindows PowerShellで)Progress Barは非常に頻繁に更新されるため、ダウンロードが大幅に遅くなります。
Start-BitStransferはファイル名を自動的に決定できますが、すべてのURLに対して機能せず、Windowsでのみサポートされます。
一部のURLには、異なるユーザーエージェントが正常に接続する必要があります。
このモジュールはこれらの問題を解決します。
.NET HTTPCLIENTクラスを使用します(現在、Microsoftが現在廃止されたWebClientクラスで使用することをお勧めします)。
最初に、コンテンツ配置ヘッダーからファイル名を取得しようとします。ヘッダーは通常のGetリクエストによって取得されます(一部のWebサーバーは、ヘッドリクエストを拒否することが示されているため)。このヘッダーが存在しない場合、絶対URLからファイル名を抽出します(付属のURLは他の場所にリダイレクトする可能性があるため)。
ファイルは、完全にメモリに保持するのではなく、ディスクに直接ストリーミングされます。
変更された日付は、見つかった場合にラスト修飾ヘッダーと一致するように完全にダウンロードが完了すると更新されます。
プログレスバーは、システムリソースの過剰使用を防ぐために、250msごとに更新することに限定されています。
ChromeおよびGoogleBot Web Crawlerのユーザーエージェント文字列は、デフォルトで試みられます。
次のコマンドを実行して、PowerShellギャラリーからインストールしてください。
install -module -Name psdownload
Resolve-uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
これにより、絶対URI(リダイレクトURI)、および応答ヘッダーから利用可能な場合はファイル、ファイルサイズ、最後の変更日を返します。
Invoke -download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -destination $ env:userprofiledownloads "
これにより、ファイルがダウンロードフォルダーにダウンロードされます。
パイプライン入力もサポートされています。
"https://aka.ms/vs/17/release/vc_redist.x64.exe"https://aka.ms/vs/17/release/vc_redist.x86.exe" | Invoke -DownLoad -Destination "$ env:userprofiledownloads"
URLは、 URIのエイリアスとしても受け入れられています。
オプションのパラメーター:
ファイル名
これを使用して、自動検出を試みるのではなく、ファイル名をオーバーライドします。
useragent
Mozilla/5.0(Windows NT 10.0; Win64; X64)AppleWebkit/537.36(Khtml、Geckoのような)Chrome/116.0.0.0 Safari/537.36
GoogleBot/2.1(+http://www.google.com/bot.html)
デフォルトのユーザーエージェントをオーバーライドします。デフォルトでは、以下を使用してサイクリングします。
ヘッダー
デフォルトは @{'Accept' = ' / '}です。これは、Filezillaなどのダウンロードを提供するために一部のサーバーをだまして必要です。
テンパス
デフォルトでは、進行中のダウンロードは%temp% / $ env:tempに保存されます。
無知
日付修正ヘッダーを無視して、変更されたものは代わりにファイルがダウンロードされた日付となります。
ブロックファイル
インターネットからダウンロードされたファイルをマークします(デフォルトではこれを行いません)。
ノクロブバー
これを使用して、既存のファイルの上書きを防ぎます。
ノプログレス
進行状況バーを抑制します。
パススルー
ダウンロードされたファイルのファイルインフォオブジェクトをパイプラインに返します。
これは、多数のURLに対してテストされています。特定のファイルをダウンロードできない場合は、問題を提出してください。一部のWebページでは、JavaScriptを実行して実際のダウンロードをトリガーする場合があることに注意してください。このタイプのURLはサポートされていません。クライアント側のスクリプトを実行する必要なく、リソースを直接指す必要があります。