Barra de progreso de PowerShell

Barra de progreso de PowerShell
Algunos comandos u operaciones tardan en ejecución y hasta que la ejecución no muestre ningún resultado. Tal situación puede crear un punto de pensamiento en la cabeza del usuario que el comando funciona o colgó. Para superar este problema, se puede usar una barra de progreso para obtener el estado del comando en curso.

Este artículo proporciona una guía detallada para obtener una barra de progreso en sus comandos PowerShell. PowerShell admite varios cmdlets y funciones para realizar cualquier tarea. En el caso de la barra de progreso, se ejerce el cmdlet de procesamiento de escritura de PowerShell para alcanzar el estado de progreso de los comandos. Aprendería la comprensión básica y el trabajo del cmdlet de procesamiento de escritura y sus parámetros compatibles.

Cómo se puede obtener la barra de progreso de PowerShell

Como se mencionó anteriormente, la barra de progreso de PowerShell se puede obtener utilizando el cmdlet de procesamiento de escritura. El comando de procesamiento de escritura de las funciones de PowerShell en la sintaxis que se proporciona a continuación:

> Programa de escritura

La sintaxis anterior depende del soporte paramétrico y los parámetros admitidos por los comandos del progreso de escritura se definen de la siguiente manera:

  • Actividad: Este parámetro permite mostrar una línea arriba/antes de la barra de progreso.
  • Terminado: Indica la visibilidad de la barra de progreso.
  • Operacion corriente: Esto muestra la línea después/debajo de la barra de progreso.
  • Estado: Los valores pasados ​​en este parámetro se muestran en la barra de progreso.
  • Identificación: Se utiliza para identificar las barras de progreso y se utiliza esta opción donde se crean múltiples barras de progreso.
  • Identificación de los padres: Denota una actividad principal de la actividad en curso actualmente.
  • Porcentaje completo: Presenta el valor porcentual que muestra cuántos por ciento de actividad se ha completado.
  • SourceID: Este parámetro especifica la fuente del registro y este parámetro no se puede usar con Parentid porque ambos conducen al mismo significado.

Cómo obtener la barra de progreso de PowerShell

La barra de progreso de PowerShell funciona en los terrenos respaldados por el progreso de escritura. Esta sección proporciona ejemplos que proporcionan un uso del progreso de escritura.

Ejemplo 1: Barra de progreso con bucle foreach
Digamos que queremos obtener la barra de progreso en el Proceso de exhibición cmdlet. Para eso, estamos creando un script de PowerShell donde escribiremos varios comandos que ayudarían a hacerlo.

Para el modo de secuencia de comandos, abra el PowerShell ISE como administrador buscando en la barra de búsqueda de Windows:

Hemos creado una barra de progreso que muestra el proceso que tiene un valor de manijas mayor o igual a 1000.

El guión se llama progreso.PS1 y contiene las siguientes líneas:

La primera línea filtra los procesos que tienen manijas mayores o iguales a 1000 y el valor se almacena en una variable nombrada $ Proc.

  • La segunda línea cuenta el $ Proc y tiendas en una variable $ Total_Count (Ayudará a obtener porcentaje)
  • Una variable ($ i) se inicializa
  • Foreach Loop comenzó con la investigación de cada proceso ($ P) En la variable $ PROC
  • El bucle se está incrementando en 1 después de cada iteración
  • $ porcentaje calcula el porcentaje de procesos después de cada iteración.
  • El cmdlet de progreso de escritura se aplica con -Actividad y -Estado parámetros
  • El Emprender el sueño Cmdlet se usa para obtener cada iteración después de 200 milisegundos.
$ Proc = Get-Process | Where -Object Mandles -GE 1000
$ Total_Proc = $ Proc.Contar
$ i = 0
Foreach ($ p en $ proc)
$ i = $ i+1
$ porcentaje = ($ i/$ total_proc)*100
Escritura -Progreso -Actividad $ P -Estado "$ porcentaje %" -porcentcomplete $ porcentaje
Inicio -sueño -Millisegundos 200

Para ejecutar el script, abra PowerShell y navegue al directorio donde se guarda su script. Hemos ejecutado el progreso.PS1 guión colocado en el C: \ scripts El directorio y la salida se muestra a continuación.

> .\progreso.PS1

Ejemplo 2: Obtener la barra de progreso usando para bucle
En este ejemplo. Porque el bucle se toma como una elección demostrativa para mostrar el progreso. Para obtener ayuda, el guión para.PS1 se usa que contiene la ejecución de For Loop con cmdlet de procesamiento de escritura:

  • La variable $ I se inicializa a 100: <$ i = 100>
  • En cada iteración, el valor disminuye por "1": <$ I ->
  • El bucle se ejecuta hasta que el valor sea mayor a 10: <$ i -gt 10>
  • En el cuerpo del bucle for, el progreso de escritura se aplica junto con la actividad, el estado y los parámetros porcentuales de complemento. Además, el Emprender el sueño El cmdlet en el código es ejecutar cada iteración con una brecha de 150 milisegundos para una mejor visión general de la barra de progreso.
por ($ i = 100; $ i -gt 10; $ i--)

Escritura -Progreso -Actividad "descendente" -Status "$ I%" -Percentcomplete $ i
Inicio -sueño -Milliseconds 150

Para la ejecución de un script, navegue su terminal a la ubicación donde se guarda el script. Hemos ejecutado el para.PS1 Como se ve en la imagen a continuación:

> .\para.PS1

Ejemplo 3: Obtenga la barra de progreso usando mientras bucle
En este ejemplo, el bucle mientras se usa aquí para obtener la barra de progreso en PowerShell. Se crea un nuevo script de PowerShell con un nombre mientras.PS1 que contiene las siguientes líneas de código con la descripción proporcionada a continuación:

  • La primera línea almacena los procesos que tienen CPU (s) mayor o igual a 4:
  • La segunda línea cuenta los procesos que se extraen en la primera línea
  • El $ I La variable se inicializa en 0:
  • Mientras que el bucle se inicia y la condición se establece en $ I -LT 100:
  • El Actividad y Estado Los parámetros se establecen en Descendente y $ I respectivamente:
  • El Emprender el sueño Cmdlet ejecuta cada iteración con una brecha de 150 milisegundos:
  • La última línea del código incrementa el $ I por 1:
$ procesos = Get-Process | Where -Object CPU -GE 4
$ total = $ procesos.Contar
$ i = 0
mientras ($ i -lt 100)

Escritura -Progreso -Actividad "Ascendente" -Status "$ I%" -Percentcomplete $ i
Inicio -sueño -Milliseconds 150
$ I++

Después de ejecutar el script, observaría la barra de progreso como se muestra en la imagen a continuación:

> .\mientras.PS1

Conclusión

La funcionalidad de la barra de progreso se practica obteniendo el estado de progreso de cualquier tarea. Es bastante útil buscar el estado de cualquier tarea, ya que puede existir comandos que toman tiempo para la ejecución. Para obtener una barra de progreso, PowerShell apoya el cmdlet de progreso de escritura. Este artículo demuestra la forma de agregar una barra de progreso utilizando el cmdlet de procesamiento de escritura. La funcionalidad del cmdlet de progreso de escritura se puede extender utilizando el conjunto de parámetros compatibles con el progreso de escritura. Además, esta guía proporciona varios ejemplos que demuestran el uso del progreso de escritura en varios escenarios.