Powershell Progress Bar

Powershell Progress Bar
Einige Befehle oder Operationen brauchen Zeit, um auszuführen, und bis zur Ausführung werden keine Ergebnisse angezeigt. Eine solche Situation kann einen Denkpunkt im Kopf des Benutzers schaffen, den entweder der Befehl funktioniert oder aufgehängt ist. Um dieses Problem zu überwinden, kann ein Fortschrittsbalken verwendet werden, um den Status des laufenden Befehls zu erhalten.

Dieser Artikel enthält einen detaillierten Leitfaden, um eine Fortschrittsleiste für Ihre PowerShell -Befehle zu erhalten. PowerShell unterstützt mehrere CMDlets und Funktionen, um jede Aufgabe auszuführen. Im Falle der Fortschrittsleiste wird das CMDLET von PowerShell des Schreibprogramms ausgeübt, um den Fortschrittsstatus der Befehle zu erreichen. Sie lernen das grundlegende Verständnis und die Arbeit des CMDLET des Schreibprogramms und seiner unterstützten Parameter.

Wie PowerShell Progress Bar erhalten werden kann

Wie bereits erwähnt, kann die PowerShell-Fortschrittsleiste unter Verwendung des CMDLET des Schreibprogramms erhalten werden. Der Befehl schreibprogrammierter von PowerShell Funktionen auf der unten angegebenen Syntax:

> Schreibprogramm

Die obige Syntax hängt von der parametrischen Unterstützung ab, und die Parameter, die durch Befehle mit Schreibbeschwerden unterstützt werden, werden wie folgt definiert:

  • Aktivität: Dieser Parameter ermöglicht es, eine Linie über/vor der Fortschrittsleiste anzuzeigen.
  • Vollendet: Zeigt die Sichtbarkeit des Fortschrittsbalkens an.
  • Aktuelle Operation: Dies zeigt die Linie nach/unterhalb der Fortschrittsleiste.
  • Status: Die in diesem Parameter übergebenen Werte werden in der Fortschrittsleiste angezeigt.
  • Ausweis: Wird verwendet, um die Fortschrittsbalken zu identifizieren, und diese Option wird verwendet, wenn mehrere Fortschrittsbalken erstellt werden.
  • Eltern ID: Bezeichnet eine übergeordnete Aktivität der derzeit laufenden Aktivität.
  • Prozent abgeschlossen: Präsentiert den prozentualen Wert, der zeigt, wie viele Prozent der Aktivitäten abgeschlossen wurden.
  • SourceId: Dieser Parameter gibt die Quelle des Datensatzes an und dieser Parameter kann nicht mit ParentID verwendet werden, da beide zu derselben Bedeutung führen.

Wie man PowerShell Progress Bar bekommt

Die PowerShell Progress Bar funktioniert aus den Gründen, die von Write-Progress unterstützt werden. Dieser Abschnitt enthält Beispiele, die die Verwendung von Schreibprogress verwenden.

Beispiel 1: Fortschrittsbalken mit foreach Loop
Nehmen wir an, wir wollen die Fortschrittsleiste auf die Showprozess cmdlet. Dafür erstellen wir ein PowerShell -Skript, in dem wir mehrere Befehle schreiben werden, die dabei helfen würden.

Öffnen Sie für den Skriptmodus den PowerShell ISE als Administrator, indem Sie ihn aus der Suchleiste von Windows durchsuchen:

Wir haben eine Fortschrittsleiste erstellt, die den Prozess zeigt, der einen Griffwert hat, der größer oder gleich 1000 ist.

Das Skript heißt Fortschritt.PS1 und enthält die folgenden Zeilen:

Die erste Linie filtert die Prozesse, die Griffe größer als oder gleich sind 1000 und der Wert wird in einer Variablen benannt gespeichert $ proc.

  • Die zweite Zeile zählt die $ proc und speichert in einer Variablen $ Total_count (Es wird dazu beitragen, Prozentsatz zu erhalten)
  • Eine Variable ($ i) wird initialisiert
  • Foreach loop begann mit dem prüfungen in jeden prozess zu prüfen ($ p) in der $ proc -Variablen
  • Die Schleife erhöht sich nach jeder Iteration um 1
  • $ Prozentsatz Berechnet den Prozentsatz der Prozesse nach jeder Iteration.
  • Das CMDLET für Schreibprogramme wird mit angewendet -Aktivität Und -Status Parameter
  • Der Startschlafen CMDLet wird verwendet, um jede Iteration nach 200 Millisekunden zu erhalten.
$ proc = Get-Process | WO -ABJECT GROSS -GE 1000
$ Total_proc = $ proc.Zählen
$ i = 0
Foreach ($ p in $ proc)
$ i = $ i+1
$ prozentual = ($ i/$ Total_proc)*100
Schreibprogramm -Aktivität $ p -Status "$ prozentual %" -PercentComplete $ Prozentsatz
Startschlafen -Millisekunden 200

Um das Skript auszuführen, öffnen Sie PowerShell und navigieren Sie zu dem Verzeichnis, in dem Ihr Skript gespeichert wird. Wir haben die ausgeführt Fortschritt.PS1 Skript in die platziert C: \ Skripte Verzeichnis und die Ausgabe ist unten gezeigt.

> .\Fortschritt.PS1

Beispiel 2: Erhalten Sie die Fortschrittsleiste für die Schleife
In diesem Beispiel. Für Schleife wird als Demonstrativauswahl angenommen, um den Fortschritt zu zeigen. Für Hilfe das Skript für.PS1 wird verwendet, die die Ausführung von für Schleife mit CMDLET mit Schreibprogress enthält:

  • Die Variable $ i wird bei 100 initialisiert: <$ i = 100>
  • In jeder Iteration wird der Wert durch “verringert“1„: <$ i ->
  • Die Schleife läuft, bis der Wert größer als 10 ist: <$ i -GT 10>
  • Im Karosseriekörper für Schleife wird der Schreibprogramm zusammen mit Aktivität, Status und prozentualen Complete-Parametern angewendet. Außerdem die Startschlafen CMDLET im Code besteht darin, jede Iteration mit einer Lücke von 150 Millisekunden auszuführen, um einen besseren Überblick über die Fortschrittsleiste zu erhalten.
für ($ i = 100; $ i-GT 10; $ i--)

Schreibprogramm -Aktivität "absteigend" -Status "$ i%" -percentComplete $ i
Startschlafen -Millisekunden 150

Für die Ausführung eines Skripts navigieren Sie in Ihrem Terminal zu dem Ort, an dem das Skript gespeichert wird. Wir haben die ausgeführt für.PS1 Wie im Bild unten zu sehen:

> .\für.PS1

Beispiel 3: Holen Sie sich die Fortschrittsleiste verwenden Sie während Schleifen
In diesem Beispiel wird hier die WHOP -Schleife verwendet, um die Fortschrittsleiste in PowerShell zu erhalten. Ein neues PowerShell -Skript wird mit einem Namen erstellt während.PS1 Das enthält die folgenden Codezeilen mit der unten angegebenen Beschreibung:

  • Die erste Zeile speichert die Prozesse mit CPU (en), die größer oder gleich 4 sind:
  • Die zweite Zeile zählt die Prozesse, die in der ersten Zeile extrahiert werden
  • Der $ i Variable wird bei 0 initialisiert:
  • Während die Schleife begonnen wird und der Zustand auf eingestellt ist $ i -LT 100:
  • Der Aktivität Und Status Parameter werden auf eingestellt Absteigend Und $ i bzw:
  • Der Startschlafen CMDLet führt jede Iteration mit einer Lücke von 150 Millisekunden aus:
  • Die letzte Zeile des Codes erhöht die $ i von 1:
$ processes = get-process | Wo -objekt cpu -ge 4
$ insgesamt = $ process.Zählen
$ i = 0
während ($ i -lt 100)

Schreibprogramm -Aktivität "aufsteigend" -Status "$ i%" -percentComplete $ i
Startschlafen -Millisekunden 150
$ i++

Nachdem Sie das Skript ausgeführt haben, beobachten Sie die Fortschrittsleiste, wie im Bild unten gezeigt:

> .\während.PS1

Abschluss

Die Fortschrittsbalkenfunktionalität wird geübt, indem der Fortschrittsstatus einer Aufgabe erreicht wird. Es ist sehr hilfreich, nach dem Status einer Aufgabe zu suchen, da es möglicherweise Befehle gibt, die Zeit für die Ausführung in Anspruch nehmen. Um eine Fortschrittsbalken zu erhalten, unterstützt PowerShell das CMDLET des Schreibprogramms. Dieser Artikel zeigt die Möglichkeit, eine Fortschrittsleiste mit dem CMDLet für Schreibprogramme hinzuzufügen. Die Funktionalität des CMDLET des Schreibprogramms kann durch die Verwendung der von Write-Progress unterstützten Parameter erweitert werden. Darüber hinaus enthält dieser Leitfaden mehrere Beispiele, die die Verwendung von Schreibprogress in verschiedenen Szenarien demonstrieren.