Compartir a través de


Write-Progress

Muestra una barra de progreso dentro de una ventana de comandos de PowerShell.

Syntax

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

Description

El Write-Progress cmdlet muestra una barra de progreso en una ventana de comandos de Windows PowerShell que muestra el estado de un comando o script en ejecución. Puede seleccionar los indicadores que la barra refleja y el texto que aparece encima y debajo de la barra de progreso.

Ejemplos

Ejemplo 1: Mostrar el progreso de un bucle For

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

Este comando muestra el progreso de un bucle For que cuenta de 1 a 100.

El Write-Progress cmdlet incluye un encabezado Activityde barra de estado , una línea de estado y la variable $i (el contador del bucle For), que indica la integridad relativa de la tarea.

Ejemplo 2: Mostrar el progreso de los bucles For anidados

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 ejemplo muestra el progreso de dos bucles For anidados, cada uno de los cuales representado por una barra de progreso.

El Write-Progress comando de la segunda barra de progreso incluye el parámetro Id que lo distingue de la primera barra de progreso.

Sin el parámetro Id , las barras de progreso se superponen entre sí en lugar de mostrarse una debajo de la otra.

Ejemplo 3: Mostrar el progreso al buscar una cadena

# Use Get-EventLog to get the events in the System log and store them in the $Events variable.
$Events = Get-EventLog -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 muestra el progreso de un comando para buscar la cadena "bios" en el registro de eventos del sistema (system).

El valor del parámetro PercentComplete se calcula dividiendo el número de eventos procesados $I por el número total de eventos recuperados $Events.count y multiplicando ese resultado en 100.

Parámetros

-Activity

Especifica la primera línea de texto del título situado encima de la barra de estado. Este texto describe la actividad cuyo progreso se notifica.

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

-Completed

Indica si la barra de progreso está visible. Si se omite este parámetro, Write-Progress muestra información de progreso.

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

-CurrentOperation

Especifica la línea de texto situada debajo de la barra de progreso. Este texto describe la operación que está teniendo lugar.

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

-Id

Especifica un identificador que distingue cada barra de progreso. Utilice este parámetro si va a crear más de una barra de progreso en un solo comando. Si las barras de progreso no tienen identificadores diferentes, se superponen en lugar de mostrarse en serie.

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

-ParentId

Especifica la actividad primaria de la actividad actual. Utilice el valor -1 si la actividad actual no tiene ninguna actividad primaria.

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

-PercentComplete

Especifica el porcentaje de la actividad que se ha completado. Utilice el valor -1 si el porcentaje completado es desconocido o no es aplicable.

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

-SecondsRemaining

Especifica el número previsto de segundos que quedan hasta que se complete la actividad. Utilice el valor -1 si el número de segundos que quedan es desconocido o no es aplicable.

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

-SourceId

Especifica el origen del registro.

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

-Status

Especifica la segunda línea de texto del título situado encima de la barra de estado. Este texto describe el estado actual de la actividad.

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

Entradas

None

No se puede canalizar la entrada a este cmdlet.

Salidas

None

Write-Progress no genera ninguna salida.

Notas

Si la barra de progreso no aparece, compruebe el valor de la $ProgressPreference variable. Si el valor se establece en SilentlyContinue, no se muestra la barra de progreso. Para obtener más información sobre las preferencias de Windows PowerShell, consulte about_Preference_Variables.

Los parámetros del cmdlet corresponden a las propiedades de la clase System.Management.Automation.ProgressRecord . Para obtener más información, vea Clase ProgressRecord en MSDN Library.