Write-Progress

Exibe uma barra de progresso em uma janela de comando do PowerShell.

Syntax

Write-Progress
     [-Activity] <String>
     [[-Status] <String>]
     [[-Id] <Int32>]
     [-PercentComplete <Int32>]
     [-SecondsRemaining <Int32>]
     [-CurrentOperation <String>]
     [-ParentId <Int32>]
     [-Completed]
     [-SourceId <Int32>]
     [<CommonParameters>]

Description

O Write-Progress cmdlet exibe uma barra de progresso em uma janela de comando do PowerShell que ilustra o status de um comando ou script em execução. Você pode selecionar os indicadores que a barra reflete e o texto que aparece acima e abaixo da barra de progresso.

Exemplos

Exemplo 1: exibir o progresso de um loop For

for ($i = 1; $i -le 100; $i++ )
{
    Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
    Start-Sleep -Milliseconds 250
}

Este comando exibe o progresso de um loop For que realiza a contagem de 1 a 100.

O Write-Progress cmdlet inclui um título Activityde barra de status, uma linha de status e a variável $i (o contador no loop For), que indica a integridade relativa da tarefa.

Exemplo 2: exibir o progresso de loops aninhados para

for($I = 1; $I -lt 101; $I++ )
{
    Write-Progress -Activity Updating -Status 'Progress->' -PercentComplete $I -CurrentOperation OuterLoop
    for($j = 1; $j -lt 101; $j++ )
    {
        Write-Progress -Id 1 -Activity Updating -Status 'Progress' -PercentComplete $j -CurrentOperation InnerLoop
    }
}

Updating
Progress ->
 [ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
 [oooooooooooooooooo                                                   ]
InnerLoop

Este exemplo exibe o progresso de dois loops aninhados For, cada um dos quais é representado por uma barra de progresso.

O Write-Progress comando para a segunda barra de progresso inclui o parâmetro ID que o distingue da primeira barra de progresso.

Sem o parâmetro ID , as barras de progresso seriam sobrepostas umas às outras em vez de serem exibidas uma abaixo da outra.

Exemplo 3: exibir o progresso durante a pesquisa de uma cadeia de caracteres

# Use Get-WinEvent to get the events in the System log and store them in the $Events variable.
$Events = Get-WinEvent -LogName system
# Pipe the events to the ForEach-Object cmdlet.
$Events | ForEach-Object -Begin {
    # In the Begin block, use Clear-Host to clear the screen.
    Clear-Host
    # Set the $i counter variable to zero.
    $i = 0
    # Set the $out variable to a empty string.
    $out = ""
} -Process {
    # In the Process script block search the message property of each incoming object for "bios".
    if($_.message -like "*bios*")
    {
        # Append the matching message to the out variable.
        $out=$out + $_.Message
    }
    # Increment the $i counter variable which is used to create the progress bar.
    $i = $i+1
    # Use Write-Progress to output a progress bar.
    # The Activity and Status parameters create the first and second lines of the progress bar heading, respectively.
    Write-Progress -Activity "Searching Events" -Status "Progress:" -PercentComplete ($i/$Events.count*100)
} -End {
    # Display the matching messages using the out variable.
    $out
}

Este comando exibe o progresso de um comando para encontrar a cadeia de caracteres "bios" no log de eventos do sistema.

O valor do parâmetro PercentComplete é calculado dividindo o número de eventos que foram processados $I pelo número total de eventos recuperados $Events.count e multiplicando esse resultado por 100.

Exemplo 4: Exibir progresso para cada nível de um processo aninhado

foreach ( $i in 1..10 ) {
  Write-Progress -Id 0 "Step $i"
  foreach ( $j in 1..10 ) {
    Write-Progress -Id 1 -ParentId 0 "Step $i - Substep $j"
    foreach ( $k in 1..10 ) {
      Write-Progress -Id 2  -ParentId 1 "Step $i - Substep $j - iteration $k"; start-sleep -m 150
    }
  }
}

Step 1
     Processing
    Step 1 - Substep 2
         Processing
        Step 1 - Substep 2 - Iteration 3
             Processing

Neste exemplo, você pode usar o parâmetro ParentId para ter saída recuada para mostrar relações pai/filho no andamento de cada etapa.

Parâmetros

-Activity

Especifica a primeira linha de texto no título acima da barra de status. Esse texto descreve a atividade cujo progresso está sendo relatado.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Completed

Indica se a barra de progresso está visível. Se esse parâmetro for omitido, Write-Progress exibirá informações de progresso.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CurrentOperation

Especifica a linha de texto abaixo da barra de progresso. Esse texto descreve a operação que está ocorrendo no momento.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Especifica um identificador que distingue cada barra de progresso das demais. Use este parâmetro quando você estiver criando mais de uma barra de progresso em um único comando. Se as barras de progresso não possuem identificadores diferentes, elas são sobrepostas em vez de exibidas em série. Valores negativos não são permitidos.

Type:Int32
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ParentId

Especifica a atividade pai da atividade atual. Use o valor -1 se a atividade atual não tem nenhuma atividade pai.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PercentComplete

Especifica a porcentagem concluída de uma determinada atividade. Use o valor -1 se a porcentagem concluída é desconhecida ou não aplicável.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecondsRemaining

Especifica o número previsto de segundos restantes até que a atividade seja concluída. Use o valor -1 se o número de segundos restantes é desconhecido ou não aplicável.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SourceId

Especifica a origem do registro. Você pode usar isso no lugar da ID , mas não pode ser usado com outros parâmetros, como ParentId.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Status

Especifica a segunda linha de texto no título acima da barra de status. Esse texto descreve o estado atual da atividade.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

None

Não é possível redirecionar a entrada para este cmdlet.

Saídas

None

Write-Progress não gera nenhuma saída.

Observações

Se a barra de progresso não aparecer, verifique o valor da $ProgressPreference variável. Se o valor está definido como SilentlyContinue, a barra de progresso não é exibida. Para obter mais informações sobre as preferências do PowerShell, consulte about_Preference_Variables.

Os parâmetros do cmdlet correspondem às propriedades da classe System.Management.Automation.ProgressRecord . Para obter mais informações, consulte Classe ProgressRecord.