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 és MinimalClassic. Classic a meglévő, módosítás nélküli renderelés. Minimal egy egysoros minimális renderelés. A Minimal az alapértelmezett formátum.

További információ: $PSStyleabout_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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

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

-CurrentOperation

Az állapotsor alatti szövegsort adja meg. Ez a szöveg a jelenleg futó műveletet ismerteti.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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ó.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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ó.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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ó.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 SilentlyContinuevan á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.