Нужна индикатор выполнения при выполнении тихой установки в PowerShell
На своей работе я много занимаюсь установкой и переустановкой одного и того же программного обеспечения. Я написал скрипт в Powershell, чтобы все установить для меня, и это прекрасно работает. Однако, поскольку он молчит, обратной связи нет, и любой, кто использует программу, считает, что она либо остановлена, либо не работает.
Я пытаюсь найти способ запустить установку без вывода сообщений, а также загрузить строку состояния. Я работал с этим кодом для индикатора выполнения:
for ($i = 1; $i -le 100; $i++ ){write-progress -activity "Search in Progress" -status "$i% Complete:" -percentcomplete $i; Start-Sleep -Milliseconds 10}; .\Untitled11.ps1
Но я не могу заставить его работать одновременно с установками. Я пробовал несколько разных команд, таких как запуск в фоновом режиме и параллельный запуск, но строка состояния всегда запускается после или перед установкой, в зависимости от того, где я ее размещаю.
Любые идеи о том, как можно одновременно запустить установку и строку состояния? Я не женат на статус-коде, я работаю только с ним. Так что, если есть более простой способ или более адаптивный код, я открыт для него.
3 ответа
Write-Progress не имеет реального представления о ходе установки вашего приложения. Это просто тупой индикатор того, что вы должны увеличивать себя каждый раз, когда хотите обновить его.
Если вы порождаете несколько файлов MSI / EXE как часть процесса установки, вы должны вставить Write-Progress после каждого шага процесса. Вы можете либо заполнить массив именем каждой командной строки MSI / EXE и пройти через нее, либо вы можете просто использовать несколько операторов Write-Progress, используя один и тот же идентификационный номер.
Кроме того, индикатор выполнения может быть увеличен только после завершения выполнения команды. Если вы перерабатываете установку для другого сценария, это составляет одну команду, и вы не получите постепенного прогресса. Вы должны сделать ваши отдельные компоненты частью одного и того же сценария. Кроме того, это также не сработает, если ваша установка - это одна большая программа, для запуска которой требуется много времени.
С помощью этого командлета вы не сможете увидеть ход установки приложения в реальном времени. Write-Progress
предназначен для отображения статуса " запущенной команды или сценария". Этот командлет не может собирать информацию о ходе установки.
Как уже упоминалось в комментариях, может быть более привлекательным выпускать сообщения, чтобы предупредить пользователя о ходе выполнения скрипта.
"This will not detect errors, but give a general sense of completion."
"Running Program A (step 1 of 3)..."
(run_program_A)
"Program A finished."
"Running Program B (step 2 of 3)..."
(run_program_B)
"Program B finished."
"Running Program C (step 3 of 3)..."
(run_program_C)
"Program C finished."
"Finished."
Создать работу, которая будет делать это. Это позволит работать асинхронно, а не синхронно, затем после установки остановите и удалите задание.