Write-Progress
Visar ett förloppsfält i ett PowerShell-kommandofönster.
Syntax
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Description
Cmdleten Write-Progress
visar ett förloppsfält i ett PowerShell-kommandofönster som visar statusen för ett kommando eller skript som körs. Du kan välja de indikatorer som fältet reflekterar och den text som visas ovanför och under förloppsindikatorn.
PowerShell 7.2 har lagt till den $PSStyle
automatiska variabel som används för att styra hur PowerShell visar viss information med hjälp av ANSI-escapesekvenser. Med $PSStyle.Progress
medlemmen kan du styra återgivning av förloppsvyfält.
$PSStyle.Progress.Style
– En ANSI-sträng som anger återgivningsformatet.$PSStyle.Progress.MaxWidth
– Anger vyns maximala bredd. Standardvärdet är120
. Minimivärdet är 18.$PSStyle.Progress.View
– En uppräkning med värden ochMinimal
Classic
.Classic
är den befintliga renderingen utan ändringar.Minimal
är en minimal återgivning med en rad.Minimal
används som standard.
Mer information om $PSStyle
finns i about_ANSI_Terminals.md.
Kommentar
Om värden inte har stöd för virtuell terminal $PSStyle.Progress.View
anges automatiskt till Classic
.
Exempel
Exempel 1: Visa förloppet för en For-loop
for ($i = 1; $i -le 100; $i++ ) {
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Det här kommandot visar förloppet för en for
loop som räknas från 1 till 100.
Cmdleten Write-Progress
innehåller en statusfältrubrik Activity
, en statusrad och variabeln $i
(räknaren i loopen for
), som anger aktivitetens relativa fullständighet.
Exempel 2: Visa förloppet för kapslade For-loopar
$PSStyle.Progress.View = 'Classic'
for($I = 0; $I -lt 10; $I++ ) {
$OuterLoopProgressParameters = @{
Activity = 'Updating'
Status = 'Progress->'
PercentComplete = $I * 10
CurrentOperation = 'OuterLoop'
}
Write-Progress @OuterLoopProgressParameters
for($j = 1; $j -lt 101; $j++ ) {
$InnerLoopProgressParameters = @{
ID = 1
Activity = 'Updating'
Status = 'Inner Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Inner Progress
[oooooooooooooooooo ]
InnerLoop
Det här exemplet anger förloppsvyn till Classic
och visar sedan förloppet för två kapslade for
loopar, som var och en representeras av ett förloppsfält.
Kommandot Write-Progress
för den andra förloppsindikatorn innehåller parametern ID som skiljer den från det första förloppsfältet.
Utan ID-parametern skulle förloppsstaplarna läggas över på varandra i stället för att visas en under den andra.
Kommentar
I det här exemplet anges förloppsvyn till Classic
, som visar CurrentOperation-värdena för varje förloppsindikator. När förloppsvyn är inställd på Minimal
visas inte CurrentOperation-värdena.
Exempel 3: Visa förloppet när du söker efter en sträng
# 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 an 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
# Determine the completion percentage
$Completed = ($i/$Events.count) * 100
# 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 $Completed
} -End {
# Display the matching messages using the out variable.
$out
}
Det här kommandot visar förloppet för ett kommando för att hitta strängen "bios" i systemhändelseloggen.
Parametervärdet PercentComplete beräknas genom att dividera antalet händelser som har bearbetats $i
med det totala antalet händelser som hämtats $Events.count
och sedan multiplicera det resultatet med 100.
Exempel 4: Visa förlopp för varje nivå i en kapslad process
$PSStyle.Progress.View = 'Classic'
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 -Milliseconds 150
}
}
}
Step 1
Processing
Step 1 - Substep 2
Processing
Step 1 - Substep 2 - Iteration 3
Processing
I det här exemplet kan du använda parametern ParentId för att ha indragna utdata för att visa överordnade och underordnade relationer i förloppet för varje steg.
Parametrar
-Activity
Anger den första textraden i rubriken ovanför statusfältet. Den här texten beskriver aktiviteten vars förlopp rapporteras.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Completed
Anger om förloppsindikatorn är synlig. Om den här parametern utelämnas Write-Progress
visar förloppsinformation.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-CurrentOperation
Anger textraden under förloppsindikatorn i förloppsvyn Classic
. Den här texten beskriver den åtgärd som för närvarande pågår. Den här parametern har ingen effekt när förloppsvyn är inställd på Minimal
.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Id
Anger ett ID som skiljer varje förloppsindikator från de andra. Använd den här parametern när du skapar mer än ett förloppsfält i ett enda kommando. Om förloppsstaplarna inte har olika ID:n läggs de över i stället för att visas i en serie. Negativa värden tillåts inte.
Typ: | Int32 |
Position: | 2 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ParentId
Anger den överordnade aktiviteten för den aktuella aktiviteten. Använd värdet -1
om den aktuella aktiviteten inte har någon överordnad aktivitet.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-PercentComplete
Anger procentandelen av aktiviteten som har slutförts. Använd värdet -1
om procent färdigt är okänt eller inte tillämpligt.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SecondsRemaining
Anger det beräknade antalet sekunder som återstår tills aktiviteten har slutförts. Använd värdet -1
om antalet sekunder som återstår är okänt eller inte tillämpligt.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SourceId
Anger källan till posten. Du kan använda detta i stället för ID men kan inte användas med andra parametrar som ParentId.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Status
Anger den andra textraden i rubriken ovanför statusfältet. Den här texten beskriver aktivitetens aktuella tillstånd.
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka objekt till den här cmdleten.
Utdata
None
Den här cmdleten returnerar inga utdata.
Kommentarer
Om förloppsindikatorn inte visas kontrollerar du variabelns $ProgressPreference
värde. Om värdet är inställt på SilentlyContinue
visas inte förloppsindikatorn. Mer information om PowerShell-inställningar finns i about_Preference_Variables.
Parametrarna för cmdleten motsvarar egenskaperna för klassen System.Management.Automation.ProgressRecord . Mer information finns i ProgressRecord-klass.