Precisa de uma barra de progresso ao fazer uma instalação silenciosa no PowerShell

2

No meu trabalho, eu faço muita instalação e reinstalação do mesmo software. Eu escrevi um script no Powershell para instalar silenciosamente tudo para mim, o que funciona muito bem. No entanto, por ser silencioso, não há feedback e qualquer outra pessoa que use o programa acha que ele está parado ou não em execução.

Estou tentando encontrar uma maneira de executar as instalações silenciosas e carregar uma barra de status. Eu tenho trabalhado com este código para a barra de progresso:

for ($i = 1; $i -le 100; $i++ ){write-progress -activity "Search in Progress" -status "$i% Complete:" -percentcomplete $i; Start-Sleep -Milliseconds 10}; .\Untitled11.ps1

Mas, para minha vida, não consigo executá-lo ao mesmo tempo que as instalações. Eu tentei vários comandos diferentes, como inicialização em segundo plano e execução paralela, mas a barra de status sempre é executada antes ou depois da instalação, dependendo de onde eu a coloque.

Alguma ideia de como posso ter a barra de instalação e de status para ser executada ao mesmo tempo? Eu não sou casado com o código de barras do status, é apenas o que eu tenho trabalhado. Então, se há uma maneira mais fácil ou mais código adaptável, estou aberto a isso.

    
por Maizzer 04.04.2016 / 19:41

3 respostas

1

Você não poderá ver o andamento da instalação de um aplicativo usando esse cmdlet. Write-Progress foi projetado para representar o status de um " comando ou script em execução ". Não há como esse cmdlet reunir informações sobre o andamento da instalação.

Como mencionado nos comentários, pode ser mais atraente emitir mensagens para alertar o usuário sobre o progresso do script.

"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."
    
por 04.04.2016 / 22:56
1

O Write-Progress não possui nenhum insight real sobre o andamento da instalação do seu aplicativo. É apenas um indicador idiota de que você precisa incrementar a si mesmo toda vez que quiser atualizá-lo.

Se você está gerando vários arquivos MSI / EXE como parte do seu progresso de instalação, você deve inserir um Write-Progress após cada etapa do processo. Você pode preencher uma matriz com o nome de cada linha de comando MSI / EXE e fazer um loop por meio dela ou simplesmente usar várias instruções de progresso de gravação usando o mesmo número de ID.

Além disso, a barra de progresso só pode ser incrementada quando um comando termina de ser executado. Se você está cultivando a instalação para outro script, isso constitui um comando e você não terá progresso incremental. Você precisa tornar seus componentes individuais parte do mesmo script. Nesse sentido, isso também não funcionará se a sua instalação for um grande programa que leva muito tempo para ser executado.

    
por 06.04.2016 / 01:24
0

Crie um trabalho que faça isso. Isso permitirá a execução assíncrona em vez de sincronicamente, depois de instalado pare e remova o trabalho.

    
por 28.09.2018 / 17:36