Write-Progress
Egy folyamatjelző sávot jelenít meg egy PowerShell-parancsablakban.
Syntax
Write-Progress
[-Activity] <String>
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Description
A Write-Progress
parancsmag egy folyamatjelző sávot jelenít meg egy PowerShell-parancsablakban, amely egy futó parancs vagy szkript állapotát jeleníti meg. Kiválaszthatja azokat a jelzőket, amelyeket a sáv tükröz, valamint az előrehaladási sáv fölött és alatt megjelenő szöveget.
A PowerShell 7.2 hozzáadta azt az $PSStyle
automatikus változót, amellyel szabályozható, hogy a PowerShell hogyan jelenít meg bizonyos információkat ANSI-feloldó szekvenciák használatával. A $PSStyle.Progress
tag lehetővé teszi a folyamatjelző sáv renderelésének szabályozását.
$PSStyle.Progress.Style
- A renderelési stílust megállító ANSI-sztring.$PSStyle.Progress.MaxWidth
- Beállítja a nézet maximális szélességét. Alapértelmezett érték:120
. A minimális érték 18.$PSStyle.Progress.View
- Egy szám értékekkel ésMinimal
Classic
.Classic
a meglévő, módosítás nélküli renderelés.Minimal
egy egysoros minimális renderelés. AMinimal
az alapértelmezett formátum.
További információ: $PSStyle
about_ANSI_Terminals.md.
Feljegyzés
Ha a gazdagép nem támogatja a virtuális terminált, $PSStyle.Progress.View
a rendszer automatikusan a következőre állítja be a következőt Classic
: .
Példák
1. példa: A For ciklus előrehaladásának megjelenítése
for ($i = 1; $i -le 100; $i++ ) {
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Ez a parancs egy 1 és 100 közötti ciklus előrehaladását for
jeleníti meg.
A Write-Progress
parancsmag tartalmaz egy állapotsorfejlécet Activity
, egy állapotsort és egy változót $i
(a for
ciklus számlálóját), amely a tevékenység relatív teljességét jelzi.
2. példa: A beágyazott ciklusok előrehaladásának megjelenítése
$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
Ez a példa a folyamatnézetet két beágyazott for
hurok állapotának megjelenítésére Classic
állítja be, amelyeket egy folyamatjelző sáv jelöl.
A Write-Progress
második folyamatjelző sáv parancsa tartalmazza az azonosító paramétert, amely megkülönbözteti azt az első folyamatjelző sávtól.
Az Azonosító paraméter nélkül a folyamatjelző sávok egymásra lesznek kapcsolva ahelyett, hogy az egyik a másik alatt jelenne meg.
3. példa: A folyamat megjelenítése sztring keresése közben
# 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
}
Ez a parancs megjeleníti a parancs előrehaladását, hogy megtalálja a "bios" sztringet a Rendszer eseménynaplójában.
A PercentComplete paraméter értékét úgy számítjuk ki, hogy elosztjuk a feldolgozott $i
események számát a lekért $Events.count
események teljes számával, majd megszorozzuk az eredményt 100-zal.
4. példa: A beágyazott folyamat egyes szintjeinek előrehaladásának megjelenítése
$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
Ebben a példában a ParentId paraméterrel behúzott kimenettel jelenítheti meg a szülő-gyermek kapcsolatokat az egyes lépések előrehaladásában.
Paraméterek
-Activity
Az állapotsor feletti címsor első szövegsorát adja meg. Ez a szöveg azt a tevékenységet írja le, amelynek előrehaladását jelenteni kell.
Típus: | String |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Completed
Azt jelzi, hogy a folyamatjelző sáv látható-e. Ha ez a paraméter nincs megadva, megjeleníti a Write-Progress
folyamatinformációkat.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-CurrentOperation
Az állapotsor alatti szövegsort adja meg. Ez a szöveg a jelenleg futó műveletet ismerteti.
Típus: | String |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Id
Egy azonosítót ad meg, amely megkülönbözteti az egyes folyamatjelző sávokat a többitől. Ezt a paramétert akkor használja, ha egyetlen parancsban több folyamatjelző sávot hoz létre. Ha a folyamatjelző sávok nem rendelkeznek különböző azonosítókkal, ahelyett, hogy sorozatban jelennének meg. A negatív értékek nem engedélyezettek.
Típus: | Int32 |
Position: | 2 |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-ParentId
Az aktuális tevékenység szülőtevékenységét adja meg. Használja az értéket -1
, ha az aktuális tevékenység nem rendelkezik szülőtevékenységsel.
Típus: | Int32 |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-PercentComplete
A befejezett tevékenység százalékos arányát adja meg. Használja az értéket -1
, ha a készültségi szint ismeretlen vagy nem alkalmazható.
Típus: | Int32 |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-SecondsRemaining
A tevékenység befejezéséig hátralévő másodpercek tervezett számát adja meg. Használja az értéket -1
, ha a hátralévő másodpercek száma ismeretlen vagy nem alkalmazható.
Típus: | Int32 |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-SourceId
Megadja a rekord forrását. Ezt az azonosító helyett használhatja, de más paraméterekkel, például ParentId-ekkel nem használható.
Típus: | Int32 |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Status
Az állapotsor feletti címsor második szövegsorát adja meg. Ez a szöveg a tevékenység aktuális állapotát ismerteti.
Típus: | String |
Position: | 1 |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag nem ad vissza kimenetet.
Jegyzetek
Ha a folyamatjelző nem jelenik meg, ellenőrizze a $ProgressPreference
változó értékét. Ha az érték be SilentlyContinue
van állítva, a folyamatjelző sáv nem jelenik meg. A PowerShell-beállításokról további információt a about_Preference_Variables című témakörben talál.
A parancsmag paraméterei megfelelnek a System.Management.Automation.ProgressRecord osztály tulajdonságainak . További információt a ProgressRecord osztályban talál.