如何运行BITS下载完成脚本(How to run script on BITS download

2019-07-30 12:42发布

我试图自动化的大型应用程序是几百MB到几GB大小的下载和安装。 我期待到使用BITS和PowerShell异步下载应用程序,然后启动安装。

使用过时bitsadmin命令有一个/SETNOTIFYCMDLINE选项一旦下载完成,让我到链安装的执行。 我如何使用PowerShell执行此?

这将是我的第一个PowerShell脚本,所以如果你有任何实例链接,将是巨大的。 谢谢

Answer 1:

我会建议使用BitsTransfer模块,因为它暴露了与BITS就业工作本地PowerShell的方法。 要开始,你只需指示PowerShell来加载位模块:

Import-Module BitsTransfer

运行获取命令 ,看看有什么新的BITS的cmdlet已添加显示:

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

你最有可能感兴趣的将是一个启动BitsTransfer :

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

cmdlet将显示在屏幕上的进度条,等待下载到完成 - 在你的脚本中的下一个命令将不会执行,直到下载完成。

对于异步任务,你可以在添加-Asynchronous参数来启动BitsTransfer cmdlet,后者将排队下载,并让它在后台运行。 您可以管理与那些下载获取-BitsTransfer和完整-BitsTransfer cmdlet的。

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


文章来源: How to run script on BITS download completion