2

На своей работе я много занимаюсь установкой и переустановкой одного и того же программного обеспечения. Я написал скрипт в 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 ответа3

1

С помощью этого командлета вы не сможете увидеть ход установки приложения в реальном времени. 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."
1

Write-Progress не имеет реального представления о ходе установки вашего приложения. Это просто тупой индикатор того, что вы должны увеличивать себя каждый раз, когда хотите обновить его.

Если вы порождаете несколько файлов MSI/EXE как часть процесса установки, вы должны вставлять Write-Progress после каждого шага процесса. Вы можете либо заполнить массив именем каждой командной строки MSI/EXE и пройти через нее, либо вы можете просто использовать несколько операторов Write-Progress, используя один и тот же идентификационный номер.

Кроме того, индикатор выполнения может быть увеличен только после завершения выполнения команды. Если вы выполняете установку другого сценария, это составляет одну команду, и вы не получите постепенного прогресса. Вы должны сделать ваши отдельные компоненты частью одного и того же сценария. Кроме того, это также не сработает, если ваша установка - это одна большая программа, для запуска которой требуется много времени.

0

Создать работу, которая будет делать это. Это позволит работать асинхронно, а не синхронно, затем после установки остановите и удалите задание.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .