3

サイズが数百 MB から数 GB の大きなアプリケーションのダウンロードとインストールを自動化しようとしています。BITS と powershell を使用してアプリケーションを非同期にダウンロードし、セットアップを開始することを検討しています。

廃止されbitsadminたコマンドを使用する/SETNOTIFYCMDLINEと、ダウンロードの完了後にセットアップの実行をチェーンできるオプションがあります。これをpowershellで実行するにはどうすればよいですか?

これは私の最初の PowerShell スクリプトになるので、例へのリンクがあれば、それは素晴らしいことです。ありがとう

4

1 に答える 1

4

BitsTransfer モジュールは、BITS ジョブを操作するためのネイティブ PowerShell メソッドを公開しているため、このモジュールを使用することをお勧めします。開始するには、PowerShell に BITS モジュールを読み込むよう指示するだけです。

Import-Module BitsTransfer

Get-Commandを実行して、追加された新しい BITS コマンドレットを確認すると、次のように表示されます。

PS C:\> Get-Command  *-bits*

CommandType     Name
-----------     ----
Cmdlet          Add-BitsFile
Cmdlet          Complete-BitsTransfer
Cmdlet          Get-BitsTransfer
Cmdlet          Remove-BitsTransfer
Cmdlet          Resume-BitsTransfer
Cmdlet          Set-BitsTransfer
Cmdlet          Start-BitsTransfer
Cmdlet          Suspend-BitsTransfer

あなたが最も興味を持っているのはStart-BitsTransferでしょう:

Start-BitsTransfer -Source http://localhost/BigInstaller.msi

コマンドレットは画面に進行状況バーを表示し、ダウンロードが完了するまで待機します。ダウンロードが完了するまで、スクリプトの次のコマンドは実行されません。

非同期タスクの場合、-Asynchronousパラメーターを Start-BitsTransfer コマンドレットに追加すると、ダウンロードがキューに入れられ、バックグラウンドで実行されます。これらのダウンロードは、Get-BitsTransferおよびComplete-BitsTransferコマンドレットで管理できます。

PS C:\> Start-BitsTransfer -Source http://localhost/BigInstaller.msi -Async
JobId                   DisplayName    TransferType  JobState
-----                   -----------    ------------  --------
da7bab7f-fbfd-432d-8... BITS Transfer  Download      Connecting

PS C:\> Get-BitsTransfer
JobId                   DisplayName    TransferType  JobState
-----                   -----------    ------------  --------
da7bab7f-fbfd-432d-8... BITS Transfer  Download      Transferred

# finish and jobs that have transferred (e.g. write them to destination on disk)
PS C:\> Get-BitsTransfer | ? {$_.JobState -eq "Transferred"} | Complete-BitsTransfer
于 2012-07-20T19:29:05.183 に答える