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.
Program PowerShell 7.2 dodał zmienną automatyczną $PSStyle
używaną do kontrolowania sposobu wyświetlania określonych informacji przy użyciu sekwencji ucieczki ANSI. Element $PSStyle.Progress
członkowski umożliwia kontrolowanie renderowania paska widoku postępu.
$PSStyle.Progress.Style
- Ciąg ANSI ustawia styl renderowania.$PSStyle.Progress.MaxWidth
— Ustawia maksymalną szerokość widoku. Wartość domyślna to120
. Minimalna wartość to 18.$PSStyle.Progress.View
- wyliczenie z wartościamiMinimal
iClassic
.Classic
to istniejące renderowanie bez zmian.Minimal
jest renderowaniem minimalnym w jednym wierszu. Wartość domyślna toMinimal
.
Aby uzyskać więcej informacji na temat $PSStyle
programu , zobacz about_ANSI_Terminals.md.
Uwaga
Jeśli host nie obsługuje terminalu wirtualnego, $PSStyle.Progress.View
zostanie automatycznie ustawiony na Classic
wartość .
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 for
pętli z zakresu od 1 do 100.
Polecenie Write-Progress
cmdlet zawiera nagłówek Activity
paska stanu , wiersz stanu i zmienną $i
(licznik w for
pętli), która wskazuje względną kompletność zadania.
Przykład 2. Wyświetlanie postępu zagnieżdżonych pętli For
$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 = 'Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
[oooooooooooooooooo ]
InnerLoop
Ten przykład ustawia widok postępu na Classic
, a następnie wyświetla postęp dwóch zagnieżdżonych for
pętli, 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 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
}
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
$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
W tym przykładzie można użyć parametru ParentId , aby wyświetlić wcięcie danych wyjściowych w celu pokazania relacji nadrzędny-podrzędny 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 nie są dozwolone.
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 ukończona 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 potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
None
To polecenie cmdlet nie zwraca ż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).