Barra de progresso do PowerShell

Barra de progresso do PowerShell
Alguns comandos ou operações levam tempo para executar e até a execução eles não mostram nenhum resultado. Essa situação pode criar um ponto de pensamento na cabeça do usuário que o comando está funcionando ou desligado. Para superar esse problema, uma barra de progresso pode ser usada para obter o status do comando em andamento.

Este artigo fornece um guia detalhado para obter uma barra de progresso em seus comandos PowerShell. PowerShell suporta vários cmdlets e funções para executar qualquer tarefa. No caso da barra de progresso, o cmdlet de Write-Progress de PowerShell é exercido para atingir o status de progresso dos comandos. Você aprenderia os entendimentos básicos e o trabalho do cmdlet de programas de gravação e seus parâmetros suportados.

Como a barra de progresso do PowerShell pode ser obtida

Como mencionado anteriormente, a barra de progresso do PowerShell pode ser obtida usando o cmdlet de escrita-progresso. O Comando de Programação de Escrita do PowerShell funciona na sintaxe fornecida abaixo:

> Progresso de gravação

A sintaxe acima depende do suporte paramétrico e dos parâmetros suportados pelos comandos de programação de gravação são definidos da seguinte forma:

  • Atividade: Este parâmetro permite mostrar uma linha acima/antes da barra de progresso.
  • Concluído: Indica a visibilidade da barra de progresso.
  • Operação atual: Isso mostra a linha após/abaixo da barra de progresso.
  • Status: Os valores passados ​​neste parâmetro são exibidos na barra de progresso.
  • Eu ia: Usado para identificar as barras de progresso e esta opção é usada onde várias barras de progresso estão sendo criadas.
  • Parentid: Indica uma atividade pai da atividade atualmente em andamento.
  • Porcentagem Complete: Apresenta o valor percentual que mostra quantos por cento da atividade foi concluída.
  • SourceID: Este parâmetro especifica a fonte do registro e este parâmetro não pode ser usado com Parentid, porque ambos levam ao mesmo significado.

Como obter a barra de progresso do PowerShell

A barra de progresso do PowerShell funciona com os motivos apoiados por Progresso de Write. Esta seção fornece exemplos que fornecem uso de progresso de gravação.

Exemplo 1: barra de progresso com loop foreach
Digamos que queremos obter a barra de progresso no Show-Process cmdlet. Para isso, estamos criando um script do PowerShell, onde escreveremos vários comandos que ajudariam a fazê -lo.

Para o modo de script, abra o PowerShell ISE como administrador pesquisando -o na barra de pesquisa do Windows:

Criamos uma barra de progresso que mostra o processo que tem um valor de alças maiores ou igual a 1000.

O script é nomeado progresso.ps1 e contém as seguintes linhas:

A primeira linha filtra os processos que têm alças maiores ou iguais a 1000 e o valor é armazenado em uma variável nomeada $ proc.

  • Segunda linha conta o $ proc e armazena em uma variável $ total_count (Isso ajudará a obter porcentagem)
  • Uma variável ($ i) é inicializado
  • Foreach loop começou a procurar cada processo ($ P) na variável $ proc
  • O loop está incrementando em 1 após cada iteração
  • $ porcentagem calcula a porcentagem de processos após cada iteração.
  • O cmdlet de andamento de gravação é aplicado com -Atividade e -Status parâmetros
  • O Sono inicial O cmdlet é usado para obter cada iteração após 200 milissegundos.
$ proc = Get-Process | Onde alças -objeto -ge 1000
$ total_proc = $ proc.Contar
$ i = 0
Foreach ($ P em $ proc)
$ i = $ i+1
$ porcentagem = ($ i/$ total_proc)*100
Progresso de gravação -Activity $ P -STATUS "$ porcentagem %" -PercentComplete $ porcentagem
Sleep -inicial -Milissegundos 200

Para executar o script, abra PowerShell e navegue até o diretório onde seu script é salvo. Nós executamos o progresso.ps1 script colocado no C: \ scripts diretório e saída é mostrado abaixo.

> .\progresso.ps1

Exemplo 2: Obtendo a barra de progresso usando o loop
Neste exemplo. Pois o loop é tomado como uma escolha demonstrativa para mostrar o progresso. Para assistência, o script para.ps1 é usado que contém a execução do loop com o cmdlet de programação de gravação:

  • A variável $ i é inicializado em 100: <$ i = 100>
  • Em cada iteração, o valor diminui por “1“: <$ i ->
  • O loop é executado até que o valor seja superior a 10: <$ i -gt 10>
  • No corpo do loop for, o progresso da gravação é aplicado junto com os parâmetros de atividade, status e porcentagem. Além disso, o Sono inicial cmdlet no código é executar cada iteração com um intervalo de 150 milissegundos para uma melhor visão geral da barra de progresso.
para ($ i = 100; $ i -gt 10; $ i--)

Escreva -Progress -Activity "descendente" -status "$ i%" -PercentComplete $ i
Solicocomemra -Sono -Minissegundos 150

Para a execução de um script, navegue pelo seu terminal para o local onde o script é salvo. Nós executamos o para.ps1 Como visto na imagem abaixo:

> .\para.ps1

Exemplo 3: Obtenha a barra de progresso usando loops
Neste exemplo, o loop while é usado aqui para obter a barra de progresso em PowerShell. Um novo script do PowerShell é criado com um nome enquanto.ps1 que contém as seguintes linhas de código com a descrição fornecida abaixo:

  • A primeira linha armazena os processos que possuem CPU (s) maior ou igual a 4:
  • A segunda linha conta os processos extraídos na primeira linha
  • O $ i A variável é inicializada em 0:
  • Enquanto o loop é iniciado e a condição está definida como $ i -LT 100:
  • O Atividade e Status Os parâmetros estão definidos como descendente e $ i respectivamente:
  • O Sono inicial O cmdlet executa cada iteração com um intervalo de 150 milissegundos:
  • A última linha do código incrementa o $ i por 1:
$ processos = Get-Process | Onde -objeto CPU -ge 4
$ total = $ processos.Contar
$ i = 0
enquanto ($ i -lt 100)

Escreva -Progress -Activity "Ascendente" -status "$ i%" -PercentComplete $ i
Solicocomemra -Sono -Minissegundos 150
$ i++

Depois de executar o script, você observaria a barra de progresso, como mostrado na imagem abaixo:

> .\enquanto.ps1

Conclusão

A funcionalidade da barra de progresso é praticada obtendo o status de progresso de qualquer tarefa. É bastante útil procurar o status de qualquer tarefa, pois pode existir comandos que levam tempo para execução. Para obter uma barra de progresso, o PowerShell suporta o cmdlet de programas de gravação. Este artigo demonstra a maneira de adicionar uma barra de progresso usando o cmdlet de programação de gravação. A funcionalidade do cmdlet de programação de gravação pode ser estendida usando o conjunto de parâmetros suportados por Progresso de Write. Além disso, este guia fornece vários exemplos que demonstram o uso de progresso de gravação em vários cenários.