Write-Progress

Visar ett förloppsfält i ett PowerShell-kommandofönster.

Syntax

Default (Standard)

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 for-loopen), vilket 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

Det här exemplet visar 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 den första förloppsindikatorn.

Utan parametern ID skulle förloppsstaplarna läggas ovanpå varandra i stället för att visas under varandra.

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 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 under 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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:0
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Completed

Anger om förloppsindikatorn är synlig. Om den här parametern utelämnas visar Write-Progress förloppsinformation.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-CurrentOperation

Anger textraden under förloppsindikatorn. Den här texten beskriver den åtgärd som för närvarande pågår.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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, överlappar de i stället för att visas i en sekvens. Negativa värden tillåts inte.

Parameteregenskaper

Typ:Int32
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:2
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:Int32
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-PercentComplete

Anger procentandelen av aktiviteten som har slutförts. Använd värdet -1 om procent färdigställande är okänt eller inte tillämpligt.

Parameteregenskaper

Typ:Int32
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:Int32
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:Int32
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Status

Anger den andra textraden i rubriken ovanför statusfältet. Den här texten beskriver aktivitetens aktuella tillstånd.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:1
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

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 värdet för variabeln $ProgressPreference. Om värdet är inställt på SilentlyContinuevisas 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 Class.