Как запустить скрипт на завершении загрузки BITS
Я пытаюсь автоматизировать загрузку и установку большого приложения размером от нескольких сотен МБ до нескольких ГБ. Я изучаю использование BITS и powershell для асинхронной загрузки приложения и запуска установки.
Использование не рекомендуется bitsadmin
команда есть /SETNOTIFYCMDLINE
опция, которая позволила бы мне выполнить цепочку выполнения установки после завершения загрузки. Как я могу выполнить это с PowerShell?
Это будет мой первый скрипт powershell, так что если у вас есть ссылки на примеры, это было бы здорово. Спасибо
1 ответ
Я бы предложил использовать модуль BitsTransfer, поскольку он предоставляет собственные методы PowerShell для работы с заданиями BITS. Чтобы начать, вы просто указываете 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