Cómo ocultar la barra de progreso en PowerShell y PowerCLI

Cuando ejecutamos un cmdlet en PowerShell de forma interactiva y éste realiza una tarea que puede ser larga es de agradecer que el mismo muestre una barra de progreso de la ejecución del mismo para ver en qué punto estamos en todo momento. No obstante, si ejecutamos un script de PowerShell de forma programada y logeamos la salida del mismo ésto hará que se nos ensucie el archivo de log de forma innecesaria. En la entrada de hoy veremos un sencillo truco para ocultar la barra de progreso en PowerShell y PowerCLI.

$ProgressPreference, la encargada de ocultar la barra de progreso en PowerShell

Muchos de los comportamientos que tiene nuestra consola de PowerShell son configurables a través de las llamadas preference variables. Para ocultar la barra de progreso en PowerShell podremos utilizar la variable $ProgressPreference. Si mostramos el contenido de la variable en nuestra consola deberíamos ver el estado actual de la misma:

PS C:\>$ProgressPreference
Continue

El valor por defecto de la variable es Continue, pero éstos son los valores que le podemos asignar:

  • Stop: Para la ejecución y muestra un error en el caso de que se vaya a utilizar una barra de progreso.
  • Inquire: No muestra la barra de progreso y pregunta al usuario si quiere continuar.
  • Continue: Muestra la barra de progreso y continua con la ejecución.
  • SilentlyContinue: No muestra la barra de progreso pero continua con la ejecución.

A decir verdad no se me ocurre la utilidad de las primeras dos opciones, no obstante la que nos interesa para esta entrada es SilentlyContinue. Ahora sí, si queremos ocultar la barra de progreso en PowerShell y PowerCLI ejecutaremos en nuestra consola:

PS C:\>$ProgressPreference = 'SilentlyContinue'

Si a posteriori ejecutamos algún cmdlet que muestre barra de progreso como, por ejemplo, New-Snapshot de PowerCLI veremos como éste ya no muestra barra de progreso.

Hay que tener en cuenta que si cerramos y abrimos nuestra consola la variable volverá a coger su valor por defecto, es decir, Continue. Si queremos alterar éste comportamiento podemos añadir la línea anterior a nuestro perfil de PowerShell como vimos en entradas anteriores, o bien si se trata de la ejecución de un script, dar el valor deseado a la variable al principio de éste.

Conclusión

Si bien como decía en la introducción cuando ejecutamos una sesión interactiva ver la barra de progreso nos puede ser útil, en ejecución de scripts y sobretodo si son programados es más un estorbo que otra cosa, por lo que $ProgressPreference nos puede ayudar a tener ejecuciones más limpias de nuestros scripts.

Espero que os sirva.

¡Hasta la próxima!

Deja un comentario