Write-Progress
Zeigt eine Statusanzeige in einem PowerShell-Befehlsfenster an.
Syntax
Write-Progress
[-Activity] <String>
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Beschreibung
Das Write-Progress
Cmdlet zeigt eine Statusleiste in einem PowerShell-Befehlsfenster an, das den Status eines ausgeführten Befehls oder Skripts darstellt. Sie können die dargestellten Indikatoren wählen, sowie den Text, der über und unter der Statusanzeige erscheint.
Beispiele
Beispiel 1: Anzeigen des Fortschritts einer For-Schleife
for ($i = 1; $i -le 100; $i++ )
{
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Dieser Befehl zeigt den Status einer For-Schleife an, die von 1 bis 100 zählt.
Das Write-Progress
Cmdlet enthält eine Statusleistenüberschrift Activity
, eine Statuszeile und die Variable $i
(der Zähler in der For-Schleife), die die relative Vollständigkeit des Vorgangs angibt.
Beispiel 2: Anzeigen des Fortschritts geschachtelter For-Schleifen
for($I = 1; $I -lt 101; $I++ )
{
Write-Progress -Activity Updating -Status 'Progress->' -PercentComplete $I -CurrentOperation OuterLoop
for($j = 1; $j -lt 101; $j++ )
{
Write-Progress -Id 1 -Activity Updating -Status 'Progress' -PercentComplete $j -CurrentOperation InnerLoop
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
[oooooooooooooooooo ]
InnerLoop
Dieses Beispiel zeigt den Status zweier geschachtelter For-Schleifen an, die jeweils durch eine Statusanzeige dargestellt werden.
Der Write-Progress
Befehl für die zweite Statusleiste enthält den Id-Parameter , der ihn von der ersten Statusleiste unterscheidet.
Ohne den Id-Parameter würden die Statusindikatoren gegenseitig überlagert, anstatt untereinander angezeigt zu werden.
Beispiel 3: Anzeigen des Fortschritts beim Suchen nach einer Zeichenfolge
# Use Get-WinEvent to get the events in the System log and store them in the $Events variable.
$Events = Get-WinEvent -LogName system
# Pipe the events to the ForEach-Object cmdlet.
$Events | ForEach-Object -Begin {
# In the Begin block, use Clear-Host to clear the screen.
Clear-Host
# Set the $i counter variable to zero.
$i = 0
# Set the $out variable to a empty string.
$out = ""
} -Process {
# In the Process script block search the message property of each incoming object for "bios".
if($_.message -like "*bios*")
{
# Append the matching message to the out variable.
$out=$out + $_.Message
}
# Increment the $i counter variable which is used to create the progress bar.
$i = $i+1
# Use Write-Progress to output a progress bar.
# The Activity and Status parameters create the first and second lines of the progress bar heading, respectively.
Write-Progress -Activity "Searching Events" -Status "Progress:" -PercentComplete ($i/$Events.count*100)
} -End {
# Display the matching messages using the out variable.
$out
}
Dieser Befehl zeigt den Status eines Befehls zum Suchen der Zeichenfolge „bios“ im Systemereignisprotokoll an.
Der Parameterwert "PercentComplete" wird berechnet, indem die Anzahl der Ereignisse dividiert $I
wird, die durch die Gesamtanzahl der abgerufenen $Events.count
Ereignisse verarbeitet wurden und dann mit 100 multipliziert werden.
Beispiel 4: Anzeigen des Fortschritts für jede Ebene eines geschachtelten Prozesses
foreach ( $i in 1..10 ) {
Write-Progress -Id 0 "Step $i"
foreach ( $j in 1..10 ) {
Write-Progress -Id 1 -ParentId 0 "Step $i - Substep $j"
foreach ( $k in 1..10 ) {
Write-Progress -Id 2 -ParentId 1 "Step $i - Substep $j - iteration $k"; start-sleep -m 150
}
}
}
Step 1
Processing
Step 1 - Substep 2
Processing
Step 1 - Substep 2 - Iteration 3
Processing
In diesem Beispiel können Sie den ParentId-Parameter verwenden, um die Ausgabe eingezogen zu haben, um übergeordnete/untergeordnete Beziehungen im Fortschritt der einzelnen Schritte anzuzeigen.
Parameter
-Activity
Gibt die erste Textzeile in der Überschrift über der Statusanzeige an. Dieser Text beschreibt die Aktivität, deren Status gemeldet wird.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Completed
Gibt an, ob die Statusanzeige sichtbar ist.
Wenn dieser Parameter nicht angegeben wird, Write-Progress
werden Statusinformationen angezeigt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CurrentOperation
Gibt die Textzeile unterhalb der Statusanzeige an. Dieser Text beschreibt den derzeit stattfindenden Vorgang.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Gibt eine ID an, die die einzelnen Statusanzeigen voneinander unterscheidet. Verwenden Sie diesen Parameter, wenn Sie in einem einzigen Befehl mehr als eine Statusanzeige erstellen. Wenn die Statusanzeigen nicht über unterschiedliche IDs verfügen, werden sie aufeinander statt in einer Reihe angezeigt. Negative Werte sind nicht zulässig.
Type: | Int32 |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParentId
Gibt die übergeordnete Aktivität der aktuellen Aktivität an. Verwenden Sie den Wert -1, wenn die aktuelle Aktivität keine übergeordnete Aktivität besitzt.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PercentComplete
Gibt den ausgeführten Anteil der Aktivität in Prozent an. Verwenden Sie den Wert -1, wenn der Prozentsatz unbekannt oder nicht zutreffend ist.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondsRemaining
Gibt die voraussichtliche Anzahl von Sekunden an, bis die Aktivität abgeschlossen ist. Verwenden Sie den Wert -1, wenn die Anzahl der verbleibenden Sekunden unbekannt oder nicht zutreffend ist.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceId
Gibt die Quelle des Datensatzes an. Sie können dies anstelle der ID verwenden, können jedoch nicht mit anderen Parametern wie ParentId verwendet werden.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Status
Gibt die zweite Textzeile in der Überschrift über der Statusanzeige an. Dieser Text beschreibt den aktuellen Status der Aktivität.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
None
Eingaben können nicht an dieses Cmdlet weitergereicht werden.
Ausgaben
None
Write-Progress
generiert keine Ausgabe.
Hinweise
Wenn die Statusleiste nicht angezeigt wird, überprüfen Sie den Wert der $ProgressPreference
Variablen. Wenn der Wert auf SilentlyContinue festgelegt ist, wird die Statusanzeige nicht angezeigt. Weitere Informationen zu PowerShell-Einstellungen finden Sie unter about_Preference_Variables.
Die Parameter des Cmdlets entsprechen den Eigenschaften der System.Management.Automation.ProgressRecord-Klasse . Weitere Informationen finden Sie unter ProgressRecord Class.