Write-Progress
Wyświetla pasek postępu w oknie polecenia programu PowerShell.
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Polecenie Write-Progress
cmdlet wyświetla pasek postępu w oknie poleceń programu PowerShell, który przedstawia stan uruchomionego polecenia lub skryptu. Możesz wybrać wskaźniki, odzwierciedlone na pasku 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 pewnych 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
. Wartość minimalna 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ść .
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.
$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 = 'Inner Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Inner Progress
[oooooooooooooooooo ]
InnerLoop
W tym przykładzie 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 byłyby nakładane na siebie zamiast wyświetlać jeden poniżej drugiego.
Uwaga
W tym przykładzie ustawia widok postępu na Classic
, który wyświetla wartości CurrentOperation dla każdego paska postępu. Gdy widok postępu jest ustawiony na Minimal
wartość , wartości CurrentOperation nie są wyświetlane.
# 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 w celu znalezienia ciągu "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 przez 100.
$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.
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.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Wskazuje, czy pasek postępu jest widoczny. Jeśli ten parametr zostanie pominięty, Write-Progress
wyświetla informacje o postępie.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Określa wiersz tekstu poniżej paska postępu w Classic
widoku postępu. W tym tekście opisano operację, która jest obecnie wykonywana. Ten parametr nie ma wpływu, gdy widok postępu jest ustawiony na Minimal
wartość .
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Określa identyfikator, który odróż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.
Typ: | Int32 |
Position: | 2 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
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.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Określa wartość procentową ukończonego działania. Użyj wartości -1
, jeśli wartość procentowa jest nieznana lub nie dotyczy.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Określa przewidywaną 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 ma zastosowania.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
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.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Określa drugi wiersz tekstu w nagłówku powyżej paska stanu. W tym tekście opisano bieżący stan działania.
Typ: | String |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
None
Nie można potokować obiektów do tego polecenia cmdlet.
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych.
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).
Opinia o produkcie PowerShell
PowerShell to projekt typu open source. Wybierz link, aby przekazać opinię: