Write-Progress
Geeft een voortgangsbalk weer in een PowerShell-opdrachtvenster.
Syntax
Write-Progress
[-Activity] <String>
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Description
De Write-Progress
cmdlet geeft een voortgangsbalk weer in een PowerShell-opdrachtvenster waarin de status van een actieve opdracht of script wordt weergegeven. U kunt de indicatoren selecteren die door de balk worden weergegeven en de tekst die boven en onder de voortgangsbalk wordt weergegeven.
Voorbeelden
Voorbeeld 1: de voortgang van een For-lus weergeven
for ($i = 1; $i -le 100; $i++ )
{
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Met deze opdracht wordt de voortgang weergegeven van een For-lus die telt van 1 tot 100.
De Write-Progress
cmdlet bevat een statusbalkkop Activity
, een statusregel en de variabele $i
(de teller in de lus For), waarmee de relatieve volledigheid van de taak wordt aangegeven.
Voorbeeld 2: de voortgang van geneste For-lussen weergeven
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
In dit voorbeeld wordt de voortgang weergegeven van twee geneste For-lussen, die elk worden vertegenwoordigd door een voortgangsbalk.
De Write-Progress
opdracht voor de tweede voortgangsbalk bevat de parameter Id waarmee deze wordt onderscheiden van de eerste voortgangsbalk.
Zonder de parameter Id worden de voortgangsbalken over elkaar geplaatst in plaats van onder elkaar te worden weergegeven.
Voorbeeld 3: De voortgang weergeven tijdens het zoeken naar een tekenreeks
# 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
}
Met deze opdracht wordt de voortgang van een opdracht weergegeven om de tekenreeks 'bios' te vinden in het gebeurtenislogboek van het systeem.
De parameterwaarde PercentComplete wordt berekend door het aantal verwerkte gebeurtenissen $I
te delen door het totale aantal opgehaalde $Events.count
gebeurtenissen en dat resultaat vervolgens te vermenigvuldigen met 100.
Voorbeeld 4: Voortgang weergeven voor elk niveau van een genest proces
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 dit voorbeeld kunt u de parameter ParentId gebruiken om ingesprongen uitvoer te hebben om bovenliggende/onderliggende relaties weer te geven in de voortgang van elke stap.
Parameters
-Activity
Hiermee geeft u de eerste regel tekst in de kop boven de statusbalk. In deze tekst wordt de activiteit beschreven waarvan de voortgang wordt gerapporteerd.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Completed
Geeft aan of de voortgangsbalk zichtbaar is.
Als deze parameter wordt weggelaten, Write-Progress
wordt voortgangsinformatie weergegeven.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CurrentOperation
Hiermee geeft u de tekstregel onder de voortgangsbalk op. In deze tekst wordt de bewerking beschreven die momenteel wordt uitgevoerd.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Hiermee geeft u een id op waarmee elke voortgangsbalk van de andere wordt onderscheiden. Gebruik deze parameter wanneer u meer dan één voortgangsbalk in één opdracht maakt. Als de voortgangsbalken geen verschillende id's hebben, worden ze over elkaar geplaatst in plaats van in een reeks weer te geven. Negatieve waarden zijn niet toegestaan.
Type: | Int32 |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParentId
Hiermee geeft u de bovenliggende activiteit van de huidige activiteit. Gebruik de waarde -1 als de huidige activiteit geen bovenliggende activiteit heeft.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PercentComplete
Hiermee geeft u het percentage van de activiteit dat is voltooid. Gebruik de waarde -1 als het percentage voltooid onbekend is of niet van toepassing is.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondsRemaining
Hiermee geeft u het verwachte aantal seconden resterende totdat de activiteit is voltooid. Gebruik de waarde -1 als het aantal resterende seconden onbekend is of niet van toepassing is.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceId
Hiermee geeft u de bron van de record. U kunt deze gebruiken in plaats van id, maar kan niet worden gebruikt met andere parameters, zoals ParentId.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Status
Hiermee geeft u de tweede regel tekst in de kop boven de statusbalk. In deze tekst wordt de huidige status van de activiteit beschreven.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
None
U kunt geen invoer doorspezen naar deze cmdlet.
Uitvoerwaarden
None
Write-Progress
genereert geen uitvoer.
Notities
Als de voortgangsbalk niet wordt weergegeven, controleert u de waarde van de $ProgressPreference
variabele. Als de waarde is ingesteld op SilentlyContinue, wordt de voortgangsbalk niet weergegeven. Zie about_Preference_Variables voor meer informatie over PowerShell-voorkeuren.
De parameters van de cmdlet komen overeen met de eigenschappen van de klasse System.Management.Automation.ProgressRecord . Zie ProgressRecord Class voor meer informatie.