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.
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
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 = 'Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
[oooooooooooooooooo ]
InnerLoop
I det här exemplet visas förloppet för två kapslade For-loopar, som var och en representeras av en förloppsindikator.
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.
Exempel 3: Visa förloppet när du söker efter en sträng
# Use Get-EventLog to get the events in the System log and store them in the $Events variable.
$Events = Get-EventLog -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
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: | True |
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. Den här texten beskriver den åtgärd som för närvarande pågår.
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.