PowerShell Progress Bar

PowerShell Progress Bar
Noen kommandoer eller operasjoner tar tid å utføre, og inntil utførelsen viser de ingen resultater. En slik situasjon kan skape et tenkningspunkt i brukerens hode at enten kommandoen fungerer eller hang på. For å overvinne dette problemet, kan en fremdriftslinje brukes til å få status for den pågående kommandoen.

Denne artikkelen gir en detaljert guide for å få en fremdriftslinje på PowerShell -kommandoene dine. PowerShell støtter flere cmdlets og funksjoner for å utføre enhver oppgave. Når det. Du vil lære de grunnleggende forståelsene og arbeidet til skriveprogressen Cmdlet og dens støttede parametere.

Hvordan PowerShell Progress Bar kan oppnås

Som nevnt tidligere, kan PowerShell Progress Bar oppnås ved å bruke skriveprogressen Cmdlet. Kommandoen for skriveprogrammer av PowerShell-funksjoner på syntaksen gitt nedenfor:

> Skriving

Ovennevnte syntaks er avhengig av den parametriske støtten, og parametrene som støttes av skriveprogressekommandoer er definert som følger:

  • Aktivitet: Denne parameteren tillater å vise en linje over/før fremdriftslinjen.
  • Fullført: Indikerer synligheten av fremdriftslinjen.
  • Nåværende operasjon: Dette viser linjen etter/under fremdriftslinjen.
  • Status: Verdiene som er passert i denne parameteren vises på fremdriftslinjen.
  • Id: Brukes til å identifisere fremdriftslinjene, og dette alternativet brukes der det opprettes flere fremdriftsstenger.
  • Parentid: Betegner en foreldreaktivitet av den for tiden pågående aktiviteten.
  • ProsentComplete: Presenterer den prosentvise verdien som viser hvor mange prosent av aktiviteten som er fullført.
  • SourceId: Denne parameteren spesifiserer kilden til posten, og denne parameteren kan ikke brukes med ParentID fordi begge fører til samme betydning.

Hvordan få PowerShell Progress Bar

PowerShell Progress Bar fungerer på grunnlaget støttet av skriving-fremgang. Denne delen gir eksempler som gir bruk av skriveprogress.

Eksempel 1: Progress Bar med foreach -sløyfe
La oss si at vi ønsker å få fremdriftslinjen på Show-prosess cmdlet. For det lager vi et PowerShell -skript der vi vil skrive flere kommandoer som vil hjelpe med å gjøre det.

For skriptmodus, åpne PowerShell ISE som administrator ved å søke den fra søkefeltet til Windows:

Vi har laget en fremdriftslinje som viser prosessen som har en håndtak verdi større enn eller lik 1000.

Manuset heter framgang.PS1 og inneholder følgende linjer:

Den første linjen filtrerer prosessene som har håndtak større enn eller lik 1000 og verdien lagres i en navngitt variabel $ Proc.

  • Andrelinjen teller $ Proc og butikker i en variabel $ total_count (Det vil hjelpe med å få prosent)
  • En variabel ($ i) er initialisert
  • Foreach Loop startet med å se på hver prosess ($ p) i $ proc -variabelen
  • Løkken øker med 1 etter hver iterasjon
  • $ prosent beregner prosentandelen av prosesser etter hver iterasjon.
  • Skrivingsprogrammet Cmdlet brukes med -Aktivitet og -Status parametere
  • De Begynn å sove Cmdlet brukes til å få hver iterasjon etter 200 millisekunder.
$ proc = get-prosess | Hvor -objekthåndtak -GE 1000
$ total_proc = $ proc.Telle
$ i = 0
Foreach ($ p i $ proc)
$ i = $ i+1
$ prosent = ($ i/$ total_proc)*100
Skriving -pålegg -Aktivitet $ p -status "$ prosent %" -prosentComplete $ prosent
Start -Sleep -Milliseconds 200

For å kjøre skriptet, åpner du PowerShell og navigerer til katalogen der skriptet ditt er lagret. Vi har utført framgang.PS1 skript plassert i C: \ skript Katalog og utdata vises nedenfor.

> .\framgang.PS1

Eksempel 2: Få fremdriftslinjen til å bruke for loop
I dette eksemplet. For sløyfe blir tatt som et demonstrativt valg for å vise fremgangen. For hjelp, skriptet til.PS1 brukes som inneholder utførelsen av for loop med skriveprogress cmdlet:

  • Variabelen $ i initialiseres på 100: <$ i = 100>
  • I hver iterasjon reduseres verdien med "1“: <$ i ->
  • Løkken går til verdien er større enn 10: <$ i -GT 10>
  • I kroppen til for-loopen brukes skriving-fremgang sammen med aktivitet, status og prosentkomplete-parametere. Dessuten Begynn å sove Cmdlet i koden er å utføre hver iterasjon med et gap på 150 millisekunder for en bedre oversikt over fremdriftslinjen.
for ($ i = 100; $ i -GT 10; $ i--)

Skriving -pålegg -Aktivitet "Discending" -Status "$ i%" -PercentComplete $ I
Start -Sleep -Milliseconds 150

For utførelse av et skript, naviger du terminalen til stedet der manuset er lagret. Vi har utført til.PS1 Som sett på bildet nedenfor:

> .\til.PS1

Eksempel 3: Få fremdriftslinje ved hjelp av mens løkker
I dette eksemplet brukes mens Loop brukes her for å få fremdriftslinjen i PowerShell. Et nytt PowerShell -skript er opprettet med et navn samtidig som.PS1 som inneholder følgende kodelinjer med beskrivelsen nedenfor:

  • Den første linjen lagrer prosessene som har CPU (er) større enn eller lik 4:
  • Den andre linjen teller prosessene som er trukket ut i første linje
  • De $ i Variabel initialiseres ved 0:
  • Mens sløyfe startes og tilstanden er satt til $ i -LT 100:
  • De Aktivitet og Status Parametere er satt til Synkende og $ i henholdsvis:
  • De Begynn å sove Cmdlet utfører hver iterasjon med et gap på 150 millisekunder:
  • Den siste linjen i koden øker $ i av 1:
$ prosesser = Get-Process | Hvor -objekt CPU -GE 4
$ TOTAL = $ prosesser.Telle
$ i = 0
mens ($ i -lt 100)

Skriv -overgang -aktivitet "Stigende" -status "$ i%" -PercentComplete $ i
Start -Sleep -Milliseconds 150
$ i++

Etter å ha utført skriptet, vil du observere fremdriftslinjen som vist på bildet nedenfor:

> .\samtidig som.PS1

Konklusjon

Progress Bar -funksjonaliteten praktiseres ved å få fremdriftsstatusen til enhver oppgave. Det er ganske nyttig å se etter statusen til enhver oppgave, da det kan eksistere kommandoer som tar tid for utførelse. For å få en fremdriftslinje støtter PowerShell den skriveprogressen CMDLET. Denne artikkelen demonstrerer måten å legge til en fremdriftslinje ved hjelp av skriveprogressen Cmdlet. Funksjonaliteten til den skriveprogrammet cmdlet kan utvides ved å bruke settet med parametere støttet av skriveprogress. I tillegg gir denne guiden flere eksempler som viser bruk av skriving i forskjellige scenarier.