Нужна индикатор выполнения при автоматической установке в PowerShell

2460
Maizzer

На своей работе я много занимаюсь установкой и переустановкой одного и того же программного обеспечения. Я написал скрипт в Powershell, чтобы все установить для меня, и это прекрасно работает. Однако, поскольку он молчит, обратной связи нет, и любой, кто использует программу, считает, что она либо остановлена, либо не работает.

Я пытаюсь найти способ запустить установку без вывода сообщений, а также загрузить строку состояния. Я работал с этим кодом для индикатора выполнения:

for ($i = 1; $i -le 100; $i++ ); .\Untitled11.ps1 

Но я не могу заставить его работать одновременно с установками. Я пробовал кучу разных команд, таких как запуск в фоновом режиме и параллельный запуск, но строка состояния всегда запускается после или до установки, в зависимости от того, где я ее размещаю.

Любые идеи о том, как можно одновременно запустить установку и строку состояния? Я не женат на статус-коде, я работаю только с ним. Так что, если есть более простой способ или более адаптивный код, я открыт для него.

2
Является ли программное обеспечение, которое вы устанавливаете без вывода сообщений, в формате MSI? Если это так, вы можете изменить параметры автоматической установки, включив индикатор выполнения, вместо того, чтобы быть полностью бесшумным. Смотрите это: https://msdn.microsoft.com/en-us/library/windows/desktop/aa367988%28v=vs.85%29.aspx И проверьте раздел "/ q" Stephen R. 8 лет назад 0
Некоторые в MSI, некоторые из них exe. Я думал о том, чтобы делать некоторые с частичным молчанием, но со всем различным программным обеспечением было слишком грязно, чтобы они по отдельности отображали свою собственную строку состояния, поэтому я обратился к тому, чтобы строка состояния проходила весь процесс. Maizzer 8 лет назад 0
Что, если вместо индикатора выполнения у вас просто появилось сообщение, в котором вы указали бы какой-нибудь текст ... типа "пожалуйста, дождитесь завершения установки" ... и затем это окно закроется после завершения? Stephen R. 8 лет назад 0

3 ответа на вопрос

1
root

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

Write-Progress does not have any real insight into the installation progress of your application. It's just a dumb indicator that you have to increment yourself every time you want it to update.

If you are spawning multiple MSI/EXE files as part of your installation progress, you have to insert a Write-Progress after every step of the process. You can either populate an array with the name of each MSI/EXE command line and loop through that, or you can just use multiple Write-Progress statements using the same ID number.

Also, the progress bar can only be incremented when a command finishes executing. If you're farming out the install to another script, that constitutes one command and you won't get incremental progress. You need to make your individual components part of the same script. Along those lines, this also won't work if your install is one big program that takes a long time to run.

0
daren

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

Этот ответ может быть значительно улучшен, если предоставить шаги для создания, остановки и удаления задания, под которым я предполагаю, что вы имеете в виду запланированное задание. Worthwelle 5 лет назад 1