Write-Progress
Muestra una barra de progreso en la ventana de comandos de Windows PowerShell.
Sintaxis
Write-Progress [-Activity] <string> [-Status] <string> [[-Id] <int>] [-Completed] [-CurrentOperation <string>] [-ParentId <int>] [-PercentComplete <int>] [-SecondsRemaining <int>] [-SourceId <int>] [<CommonParameters>]
Descripción
El cmdlet Write-Progress muestra en una ventana de comandos de Windows PowerShell una barra de progreso que describe el estado de la ejecución de un comando o script. Puede seleccionar los indicadores que la barra refleja así como el texto que aparece encima y debajo de la barra de progreso.
Parámetros
-Activity <string>
Especifica la primera línea de texto en el encabezado situado encima de la barra de estado. Este texto describe la actividad de cuyo progreso se informa.
¿Requerido? |
true |
¿Posición? |
1 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Completed
Indica si la barra de progreso está visible. Si se omite este parámetro, Write-Progress mostrará la información de progreso.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-CurrentOperation <string>
Especifica la línea de texto situada debajo de la barra de progreso. Este texto describe la operación que se está ejecutando.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Id <int>
Especifica un identificador que distingue cada barra de progreso de las demás. Utilice este parámetro cuando cree más de una barra de progreso en un solo comando. Si las barras de progreso no tienen identificadores diferentes, aparecerán superpuestas en lugar de mostrarse en serie.
¿Requerido? |
false |
¿Posición? |
3 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-ParentId <int>
Identifica la actividad principal de la actividad actual. Use el valor -1 si la actividad actual no tiene actividad principal.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-PercentComplete <int>
Especifica el porcentaje de la actividad que se ha completado. Use el valor -1 si no se conoce el porcentaje finalizado o no es aplicable.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-SecondsRemaining <int>
Especifica el número previsto de segundos que quedan hasta que finalice la actividad. Use el valor -1 si no se conoce el número de segundos que queda o no es aplicable.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-SourceId <int>
Identifica el origen del registro.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Status <string>
Especifica la segunda línea de texto en el encabezado situado encima de la barra de estado. Este texto describe el estado actual de la actividad.
¿Requerido? |
true |
¿Posición? |
2 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
<CommonParameters>
Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.
Entradas y salidas
El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.
Entradas |
Ninguno No se pueden canalizar entradas a este cmdlet. |
Salidas |
Ninguno Write-Progress no genera resultados. |
Notas
Si la barra de progreso no aparece, compruebe el valor de la variable $ProgressPreference. Si el valor está establecido en SilentlyContinue, no se mostrará la barra de progreso. Para obtener más información sobre las preferencias de Windows PowerShell, vea about_Preference_Variables.
Los parámetros del cmdlet se corresponden con las propiedades de la clase ProgressRecord (System.Management.Automation.ProgressRecord). Para obtener más información, vea el tema referente a ProgressRecord en el Kit de desarrollo de software (SDK) de Windows PowerShell.
Ejemplo 1
C:\PS>for ($i = 1; $i -lt 101; $i++ )
{for ($j=0;$j -lt 10000;$j++) {} write-progress -activity "Search in Progress" -status "% Complete:" -percentcomplete $i;}
Descripción
-----------
Este comando muestra el progreso de dos bucles For anidados. El primer bucle cuenta hasta 100. Por cada incremento de ese bucle, el segundo bucle cuenta hasta 10000.
El comando Write-Progress incluye un encabezado de barra de estado ("activity"), una línea de estado y la variable $i (contador en el bucle For), que indica la finalización relativa de la tarea.
Ejemplo 2
C:\PS>for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress-> -percentcomplete $i -currentOperation OuterLoop} for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress -percentcomplete $i -id 1 -currentOperation InnerLoop}
Updating
progress ->
[oooooooooooooooooo ]
OutsideLoop
Updating
progress
[oooooooooooooooooo ]
InnerLoop
Descripción
-----------
En este ejemplo, se muestra el progreso de dos bucles For anidados. Cada bucle viene representado por una barra de progreso.
El comando Write-Progress para la segunda barra de progreso incluye el parámetro Id, que la distingue de la primera barra de progreso. Sin este parámetro, las barras de progreso aparecerían superpuestas en lugar de mostrarse una debajo de la otra.
Ejemplo 3
C:\PS>$events = get-eventlog -logname system
C:\PS> $events | foreach-object -begin {clear-host;$i=0;$out=""} `
-process {if($_.message -like "*bios*") {$out=$out + $_.Message};
$i = $i+1;`
write-progress -activity "Searching Events" `
-status "Progress:" -percentcomplete ($i/$events.count*100)} `
-end {$out}
Descripción
-----------
Este comando muestra el progreso de un comando para buscar la cadena "bios" en el registro de eventos del sistema.
En la primera línea del comando, el cmdlet Get-EventLog obtiene los eventos del registro de eventos del sistema y los almacena en la variable $events.
En la segunda línea, los eventos se canalizan al cmdlet ForEach-Object. Antes de que se inicie el procesamiento, se usa el cmdlet Clear-Host para borrar la pantalla, se establece la variable de contador $i en cero y se establece la variable de salida $out en una cadena vacía.
En la tercera línea, que es el bloque de script Process del cmdlet ForEach-Object, el cmdlet busca "bios" en la propiedad de mensaje de cada objeto entrante. Si se encuentra la cadena, se agrega el mensaje a la variable $out.
En la cuarta línea, la variable de contador $i se incrementa para registrar que se ha examinado otro evento.
La quinta línea usa el cmdlet Write-Progress con valores para los campos de texto Activity y Status que crean la primera y la segunda línea del encabezado de la barra de progreso, respectivamente. El valor del parámetro PercentComplete se calcula dividiendo el número de eventos procesados ($i) entre el número total de eventos recuperados ($events.count) y, a continuación, multiplicando ese resultado por 100.
En la última línea, se usa el parámetro End del cmdlet ForEach-Object para mostrar los mensajes que están almacenados en la variable $out.
Vea también
Conceptos
Write-Verbose
Write-Error
Write-Host
Write-Debug
Write-Output
Write-Warning