PowerShell Progress Bar

PowerShell Progress Bar
Alcuni comandi o operazioni richiedono tempo per eseguire e fino all'esecuzione non mostrano alcun risultato. Tale situazione può creare un punto di pensiero nella testa dell'utente che il comando funziona o ha riattaccato. Per superare questo problema, può essere utilizzata una barra di avanzamento per ottenere lo stato del comando in corso.

Questo articolo fornisce una guida dettagliata per ottenere una barra di avanzamento sui tuoi comandi PowerShell. PowerShell supporta diversi cmdlet e funzioni per eseguire qualsiasi attività. Nel caso della barra di avanzamento, viene esercitato il cmdlet di write-progress di PowerShell per raggiungere lo stato di avanzamento dei comandi. Impareresti le comprensioni di base e il lavoro del cmdlet write-progress e dei suoi parametri supportati.

Come si può ottenere la barra di avanzamento di PowerShell

Come accennato in precedenza, la barra di avanzamento di PowerShell può essere ottenuta utilizzando il cmdlet write-progress. Il comando write-progress di PowerShell funziona sulla sintassi fornita di seguito:

> Programma di scrittura

La sintassi di cui sopra dipende dal supporto parametrico e i parametri supportati dai comandi di progresso di scrittura sono definiti come segue:

  • Attività: Questo parametro consente di mostrare una riga sopra/prima della barra di avanzamento.
  • Completato: Indica la visibilità della barra di avanzamento.
  • CurrentOperation: Questo mostra la riga dopo/sotto la barra di avanzamento.
  • Stato: I valori passati in questo parametro vengono visualizzati sulla barra di avanzamento.
  • Id: Utilizzato per identificare le barre di avanzamento e questa opzione viene utilizzata in cui vengono create più barre di avanzamento.
  • Parenteid: Indica un'attività genitore dell'attività attualmente in corso.
  • Percentuale complete: Presenta il valore percentuale che mostra quante percento delle attività è stata completata.
  • SourceID: Questo parametro specifica la fonte del record e questo parametro non può essere utilizzato con ParentID perché entrambi portano allo stesso significato.

Come ottenere PowerShell Progress Bar

La barra di avanzamento di PowerShell funziona per motivi supportati da Write-Progress. Questa sezione fornisce esempi che forniscono l'utilizzo del programma di scrittura.

Esempio 1: barra di avanzamento con anello foreach
Diciamo che vogliamo ottenere la barra di avanzamento sul Show-process cmdlet. Per questo, stiamo creando uno script PowerShell in cui scriveremo diversi comandi che aiuterebbero a farlo.

Per la modalità di scripting, aprire PowerShell ISE come amministratore cercandolo dalla barra di ricerca di Windows:

Abbiamo creato una barra di avanzamento che mostra il processo che ha un valore di gestione maggiore o uguale a 1000.

La sceneggiatura è nominata progresso.PS1 e contiene le seguenti righe:

La prima linea filtra i processi che hanno gesti 1000 e il valore è memorizzato in una variabile denominata $ Proc.

  • La seconda linea conta il $ Proc e negozi in una variabile $ total_count (Aiuterà a ottenere la percentuale)
  • Una variabile ($ i) è inizializzato
  • Foreach Loop è iniziato a esaminare ogni processo ($ P) Nella variabile $ proc
  • Il ciclo sta incrementando di 1 dopo ogni iterazione
  • percentuale di $ calcola la percentuale di processi dopo ogni iterazione.
  • Il cmdlet di write-progress viene applicato con -Attività E -Stato parametri
  • IL Il sonno di inizio CMDLET viene utilizzato per ottenere ogni iterazione dopo 200 millisecondi.
$ proc = get-process | Where -Object -mane -Ge 1000
$ total_proc = $ proc.Contare
$ i = 0
Foreach ($ p in $ proc)
$ i = $ i+1
$ percentuale = ($ i/$ total_proc)*100
Write -progress -attività $ p -status "$ percentuale %" -PercentComplete $ percentuale
Start -Sleep -milliseconds 200

Per eseguire lo script, apri PowerShell e vai alla directory in cui viene salvato lo script. Abbiamo eseguito il progresso.PS1 script inserito nel file C: \ Scripts La directory e l'output sono mostrate di seguito.

> .\progresso.PS1

Esempio 2: ottenere la barra di avanzamento utilizzando per loop
In questo esempio. Per il ciclo è preso come una scelta dimostrativa per mostrare i progressi. Per assistenza, la sceneggiatura per.PS1 viene utilizzato che contiene l'esecuzione di per loop con cmdlet write-progress:

  • La variabile $ i è inizializzato a 100: <$ i = 100>
  • In ogni iterazione, il valore è diminuito di "1“: <$ i ->
  • Il ciclo funziona fino a quando il valore è maggiore di 10: <$ i -gt 10>
  • Nel corpo del ciclo per loop, viene applicato il programma di scrittura insieme a attività di attività, stato e percentuali di complesso. Inoltre, il Il sonno di inizio Il cmdlet nel codice è eseguire ogni iterazione con un divario di 150 millisecondi per una migliore panoramica della barra di avanzamento.
per ($ i = 100; $ i -gt 10; $ i--)

Write -progress -attività "discendente" -status "$ i%" -PercentComplete $ i
Start -Sleep -milliseconds 150

Per l'esecuzione di uno script, navigare nel tuo terminale in cui lo script viene salvato. Abbiamo eseguito il per.PS1 Come visto nell'immagine qui sotto:

> .\per.PS1

Esempio 3: ottenere la barra di avanzamento utilizzando mentre i loop
In questo esempio, il ciclo while viene utilizzato qui per ottenere la barra di avanzamento in PowerShell. Un nuovo script PowerShell viene creato con un nome Mentre.PS1 che contiene le seguenti righe di codice con la descrizione fornita di seguito:

  • La prima linea memorizza i processi che hanno CPU superiori o uguali a 4:
  • La seconda riga conta i processi che vengono estratti nella prima riga
  • IL $ i La variabile è inizializzata a 0:
  • Mentre il ciclo è avviato e la condizione è impostata su $ i -Lt 100:
  • IL Attività E Stato I parametri sono impostati su Discendente E $ i rispettivamente:
  • IL Il sonno di inizio CMDLET esegue ogni iterazione con un divario di 150 millisecondi:
  • L'ultima riga del codice aumenta il $ i di 1:
$ processi = get-process | Dove -object cpu -ge 4
$ totale = $ processi.Contare
$ i = 0
while ($ i -lt 100)

Write -progress -attività "ascendente" -status "$ i%" -PercentComplete $ i
Start -Sleep -milliseconds 150
$ i++

Dopo aver eseguito lo script, osserveresti la barra di avanzamento come mostrato nell'immagine seguente:

> .\Mentre.PS1

Conclusione

La funzionalità di Progress Bar viene praticata ottenendo lo stato di avanzamento di qualsiasi attività. È abbastanza utile cercare lo stato di qualsiasi attività in quanto potrebbero esistere comandi che richiedono tempo per l'esecuzione. Per ottenere una barra di avanzamento, PowerShell supporta il cmdlet di write-progress. Questo articolo dimostra il modo per aggiungere una barra di avanzamento utilizzando il cmdlet write-progress. La funzionalità del cmdlet write-progress può essere estesa utilizzando l'insieme di parametri supportati da Write-Progress. Inoltre, questa guida fornisce diversi esempi che dimostrano l'uso del programma di scrittura in vari scenari.