Write-Progress
Zeigt eine Statusanzeige in einem Windows PowerShell-Befehlsfenster an.
Syntax
Write-Progress [-Activity] <string> [-Status] <string> [[-Id] <int>] [-Completed] [-CurrentOperation <string>] [-ParentId <int>] [-PercentComplete <int>] [-SecondsRemaining <int>] [-SourceId <int>] [<CommonParameters>]
Beschreibung
Mit dem Cmdlet "Write-Progress" wird eine Statusanzeige in einem Windows PowerShell-Befehlsfenster angezeigt, die den Status eines ausgeführten Befehls oder Skripts darstellt. Sie können die von der Statusanzeige dargestellten Indikatoren sowie den über und unter der Statusanzeige angezeigten Text auswählen.
Parameter
-Activity <string>
Gibt die erste Textzeile in der Überschrift über der Statusleiste an. Dieser Text beschreibt die Aktivität, deren Status gemeldet wird.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Completed
Gibt an, ob die Statusleiste sichtbar ist. Wenn dieser Parameter weggelassen wird, zeigt Write-Progress Statusinformationen an.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-CurrentOperation <string>
Gibt die Textzeile unter der Statusanzeige an. Dieser Text beschreibt den gegenwärtig ausgeführten Vorgang.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Id <int>
Gibt eine ID an, mit der die einzelnen Statusanzeigen voneinander unterschieden werden. Verwenden Sie diesen Parameter, wenn Sie in einem einzelnen Befehl mehrere Statusanzeigen erstellen. Wenn die Statusanzeigen keine unterschiedlichen IDs aufweisen, werden sie aufeinander statt in Reihe angezeigt.
Erforderlich? |
false |
Position? |
3 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-ParentId <int>
Gibt die übergeordnete Aktivität der aktuellen Aktivität an. Verwenden Sie den Wert -1, wenn für die aktuelle Aktivität keine übergeordnete Aktivität vorhanden ist.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-PercentComplete <int>
Gibt den bereits ausgeführten Anteil der Aktivität in Prozent an. Verwenden Sie den Wert -1, wenn der Prozentsatz der ausgeführten Aktivität nicht bekannt oder nicht zutreffend ist.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-SecondsRemaining <int>
Gibt die voraussichtliche Anzahl von Sekunden bis zum Abschluss der Aktivität an. Verwenden Sie den Wert -1, wenn die Anzahl der restlichen Sekunden nicht bekannt oder nicht zutreffend ist.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-SourceId <int>
Gibt die Quelle des Datensatzes an.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Status <string>
Gibt die zweite Textzeile in der Überschrift über der Statusleiste an. Dieser Text beschreibt den aktuellen Status der Aktivität.
Erforderlich? |
true |
Position? |
2 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
Keiner Eingaben können nicht über die Pipeline an dieses Cmdlet übergeben werden. |
Ausgaben |
Keiner Write-Progress generiert keine Ausgabe. |
Hinweise
Wenn die Statusanzeige nicht angezeigt wird, überprüfen Sie den Wert der Variablen "$ProgressPreference". Wenn der Wert auf "SilentlyContinue" festgelegt ist, wird die Statusanzeige nicht angezeigt. Weitere Informationen über Windows PowerShell-Einstellungen finden Sie unter "about_Preference_Variables".
Die Parameter des Cmdlets entsprechen den Eigenschaften der ProgressRecord-Klasse (System.Management.Automation.ProgressRecord). Weitere Informationen finden Sie im Thema "ProgressRecord" im Windows PowerShell Software Development Kit (SDK).
Beispiel 1
C:\PS>for ($i = 1; $i -lt 101; $i++ )
{for ($j=0;$j -lt 10000;$j++) {} write-progress -activity "Search in Progress" -status "% Complete:" -percentcomplete $i;}
Beschreibung
-----------
Mit diesem Befehl wird der Status von zwei geschachtelten For-Schleifen angezeigt. Die erste Schleife zählt bis 100. Die zweite Schleife zählt für jedes Inkrement dieser Schleife bis 10.000.
Der Befehl "Write-Progress" umfasst eine Statusanzeigenüberschrift ("activity"), eine Statuszeile und die Variable "$i" (der Zähler in der For-Schleife), die die relative Vollständigkeit der Aufgabe angibt.
Beispiel 2
C:\PS>for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress-> -percentcomplete $i -currentOperation OuterLoop} for($i = 1; $i -lt 101; $i++ ) {write-progress -activity Updating -status progress -percentcomplete $i -id 1 -currentOperation InnerLoop}
Updating
progress ->
[oooooooooooooooooo ]
OutsideLoop
Updating
progress
[oooooooooooooooooo ]
InnerLoop
Beschreibung
-----------
In diesem Beispiel wird der Status von zwei geschachtelten For-Schleifen mit jeweils einer eigenen Statusanzeige angezeigt.
Der Befehl "Write-Progress" für die zweite Statusanzeige enthält den Id-Parameter, der die zweite Statusanzeige von der ersten Statusanzeige unterscheidet. Ohne den Id-Parameter werden die Statusanzeigen aufeinander statt untereinander angezeigt.
Beispiel 3
C:\PS>$events = get-eventlog -logname system
C:\PS> $events | foreach-object -begin {clear-host;$i=0;$out=""} `
-process {if($_.message -like "*bios*") {$out=$out + $_.Message};
$i = $i+1;`
write-progress -activity "Searching Events" `
-status "Progress:" -percentcomplete ($i/$events.count*100)} `
-end {$out}
Beschreibung
-----------
Dieser Befehl zeigt den Status eines Befehls an, mit dem die Zeichenfolge "bios" im Systemereignisprotokoll gesucht wird.
In der ersten Zeile des Befehls ruft das Cmdlet "Get-EventLog" die Ereignisse im Systemprotokoll ab und speichert sie in der Variablen "$events".
In der zweiten Zeile werden die Ereignisse über die Pipeline an das Cmdlet "ForEach-Object" übergeben. Vor der Verarbeitung wird der Inhalt des Bildschirms mit dem Cmdlet "Clear-Host" gelöscht, die Zählervariable "$i" wird auf 0 festgelegt, und die Ausgabevariable "$out" wird auf eine leere Zeichenfolge festgelegt.
In der dritten Zeile, bei der es sich um den Process-Sriptblock des Cmdlet "ForEach-Object" handelt, sucht das Cmdlet in der Meldungseigenschaft jedes eingehenden Objekts nach "bios". Wenn die Zeichenfolge gefunden wird, wird $out die Meldung hinzugefügt.
In der vierten Zeile wird die Zählervariable "$i" erhöht, um aufzuzeichnen, dass ein weiteres Ereignis überprüft wurde.
In der fünften Zeile wird das Cmdlet "Write-Progress" mit Werten für die Textfelder "Activity" und "Status" verwendet, mit denen die erste bzw. zweite Zeile der Statusanzeigenüberschrift erstellt wird. Der Wert des PercentComplete-Parameters wird berechnet, indem die Anzahl der verarbeiteten Ereignisse ($i) durch die Gesamtzahl der abgerufenen Ereignisse ($events.count) dividiert und das Ergebnis mit 100 multipliziert wird.
In der letzten Zeile wird der End-Parameter des Cmdlet "ForEach-Object" verwendet, um die in der Variablen "$out" gespeicherten Meldungen anzuzeigen.
Siehe auch
Konzepte
Write-Verbose
Write-Error
Write-Host
Write-Debug
Write-Output
Write-Warning