Udostępnij za pośrednictwem


Write-Progress

Wyświetla pasek postępu w oknie poleceń programu PowerShell.

Składnia

Write-Progress
     [-Activity] <String>
     [[-Status] <String>]
     [[-Id] <Int32>]
     [-PercentComplete <Int32>]
     [-SecondsRemaining <Int32>]
     [-CurrentOperation <String>]
     [-ParentId <Int32>]
     [-Completed]
     [-SourceId <Int32>]
     [<CommonParameters>]

Opis

Polecenie Write-Progress cmdlet wyświetla pasek postępu w oknie polecenia programu PowerShell, które przedstawia stan uruchomionego polecenia lub skryptu. Możesz wybrać wskaźniki, które pasek odzwierciedla, oraz tekst wyświetlany powyżej i poniżej paska postępu.

Przykłady

Przykład 1. Wyświetlanie postępu pętli For

for ($i = 1; $i -le 100; $i++ )
{
    Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
    Start-Sleep -Milliseconds 250
}

To polecenie wyświetla postęp pętli For, która liczy się od 1 do 100.

Polecenie Write-Progress cmdlet zawiera nagłówek Activitypaska stanu , wiersz stanu i zmienną $i (licznik w pętli For), która wskazuje względną kompletność zadania.

Przykład 2. Wyświetlanie postępu zagnieżdżonych pętli For

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

W tym przykładzie przedstawiono postęp dwóch zagnieżdżonych pętli Dla, z których każdy jest reprezentowany przez pasek postępu.

Polecenie Write-Progress drugiego paska postępu zawiera parametr Id , który odróżnia go od pierwszego paska postępu.

Bez parametru Id paski postępu będą nakładane na siebie zamiast wyświetlania jednego poniżej drugiego.

Przykład 3. Wyświetlanie postępu podczas wyszukiwania ciągu

# 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
}

To polecenie wyświetla postęp polecenia, aby znaleźć ciąg "bios" w dzienniku zdarzeń systemu.

Wartość parametru PercentComplete jest obliczana przez podzielenie liczby zdarzeń przetworzonych $I przez łączną liczbę pobranych $Events.count zdarzeń, a następnie pomnożenie tego wyniku o 100.

Przykład 4. Wyświetlanie postępu dla każdego poziomu zagnieżdżonego procesu

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

W tym przykładzie można użyć parametru ParentId , aby wyświetlić wcięcie danych wyjściowych w celu pokazania relacji nadrzędnych/podrzędnych w toku każdego kroku.

Parametry

-Activity

Określa pierwszy wiersz tekstu w nagłówku powyżej paska stanu. W tym tekście opisano działanie, którego postęp jest zgłaszany.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Completed

Wskazuje, czy pasek postępu jest widoczny. Jeśli ten parametr zostanie pominięty, Write-Progress wyświetla informacje o postępie.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CurrentOperation

Określa wiersz tekstu poniżej paska postępu. W tym tekście opisano operację, która jest obecnie wykonywana.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Określa identyfikator, który rozróżnia każdy pasek postępu od innych. Użyj tego parametru podczas tworzenia więcej niż jednego paska postępu w jednym poleceniu. Jeśli paski postępu nie mają różnych identyfikatorów, są one nakładane zamiast być wyświetlane w serii. Wartości ujemne są niedozwolone.

Type:Int32
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ParentId

Określa działanie nadrzędne bieżącego działania. Użyj wartości -1, jeśli bieżące działanie nie ma działania nadrzędnego.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PercentComplete

Określa procent ukończonego działania. Użyj wartości -1, jeśli wartość procentowa jest nieznana lub nie dotyczy.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecondsRemaining

Określa prognozowaną liczbę sekund pozostałych do momentu zakończenia działania. Użyj wartości -1, jeśli liczba sekund pozostałych jest nieznana lub nie dotyczy.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SourceId

Określa źródło rekordu. Można go użyć zamiast identyfikatora , ale nie można go używać z innymi parametrami, takimi jak ParentId.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Status

Określa drugi wiersz tekstu w nagłówku powyżej paska stanu. W tym tekście opisano bieżący stan działania.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

None

Nie można przekazać potoku danych wejściowych do tego polecenia cmdlet.

Dane wyjściowe

None

Write-Progress nie generuje żadnych danych wyjściowych.

Uwagi

Jeśli pasek postępu nie jest wyświetlany, sprawdź wartość zmiennej $ProgressPreference . Jeśli wartość jest ustawiona na SilentlyContinue, pasek postępu nie jest wyświetlany. Aby uzyskać więcej informacji na temat preferencji programu PowerShell, zobacz about_Preference_Variables.

Parametry polecenia cmdlet odpowiadają właściwościom klasy System.Management.Automation.ProgressRecord . Aby uzyskać więcej informacji, zobacz ProgressRecord Class (Klasa ProgressRecord).