我试图自动化的大型应用程序是几百MB到几GB大小的下载和安装。 我期待到使用BITS和PowerShell异步下载应用程序,然后启动安装。
使用过时bitsadmin
命令有一个/SETNOTIFYCMDLINE
选项一旦下载完成,让我到链安装的执行。 我如何使用PowerShell执行此?
这将是我的第一个PowerShell脚本,所以如果你有任何实例链接,将是巨大的。 谢谢
我试图自动化的大型应用程序是几百MB到几GB大小的下载和安装。 我期待到使用BITS和PowerShell异步下载应用程序,然后启动安装。
使用过时bitsadmin
命令有一个/SETNOTIFYCMDLINE
选项一旦下载完成,让我到链安装的执行。 我如何使用PowerShell执行此?
这将是我的第一个PowerShell脚本,所以如果你有任何实例链接,将是巨大的。 谢谢
我会建议使用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