Write-Progress

PowerShell komut penceresinde ilerleme çubuğu görüntüler.

Syntax

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

Description

Write-Progress Cmdlet, powershell komut penceresinde çalışan bir komutun veya betiğin durumunu gösteren bir ilerleme çubuğu görüntüler. Çubuğun yansıtdığı göstergeleri ve ilerleme çubuğunun üstünde ve altında görünen metni seçebilirsiniz.

PowerShell 7.2, AnSI kaçış dizilerini kullanarak PowerShell'in belirli bilgileri nasıl görüntülediğini denetlemek için kullanılan otomatik değişkeni ekledi $PSStyle . Üye, $PSStyle.Progress ilerleme görünümü çubuğu işlemeyi denetlemenize olanak tanır.

  • $PSStyle.Progress.Style - İşleme stilini ayaran ANSI dizesi.
  • $PSStyle.Progress.MaxWidth - Görünümün maksimum genişliğini ayarlar. varsayılan değeridir 120. En düşük değer 18'dir.
  • $PSStyle.Progress.View - ve değerlerini MinimalClassiciçeren bir sabit listesi. Classic , değişiklik olmadan var olan işlemedir. Minimal tek satırlık minimal bir işlemedir. Minimal varsayılan değerdir.

hakkında $PSStyledaha fazla bilgi için bkz . about_ANSI_Terminals.md.

Not

Konak Sanal Terminal'i desteklemiyorsa, $PSStyle.Progress.View otomatik olarak olarak Classicayarlanır.

Örnekler

Örnek 1: For döngüsünün ilerleme durumunu görüntüleme

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

Bu komut, 1 ile 100 arasında sayan bir for döngünün ilerleme durumunu görüntüler.

Write-Progress Cmdlet bir durum çubuğu başlığı Activity, durum satırı ve değişkeni $i (döngüdeki for sayaç) içerir ve bu da görevin göreli tamlığını gösterir.

Örnek 2: İç içe For döngülerinin ilerleme durumunu görüntüleme

$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

Bu örnek, ilerleme görünümünü olarak Classic ayarlar ve her biri bir ilerleme çubuğuyla temsil edilen iki iç içe for döngünün ilerleme durumunu görüntüler.

Write-Progress İkinci ilerleme çubuğunun komutu, onu ilk ilerleme çubuğundan ayıran Id parametresini içerir.

Id parametresi olmadan, ilerleme çubukları birbirinin altında görüntülenmek yerine birbirinin üzerine eklenir.

Örnek 3: Dize ararken ilerleme durumunu görüntüleme

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

Bu komut, Sistem olay günlüğünde "bios" dizesini bulmak için bir komutun ilerleme durumunu görüntüler.

PercentComplete parametre değeri, işlenen $i olayların sayısı alınan $Events.count toplam olay sayısına bölünerek ve ardından bu sonuç 100 ile çarpılarak hesaplanır.

Örnek 4: İç içe sürecin her düzeyi için ilerleme durumunu görüntüleme

$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

Bu örnekte, her adımın ilerlemesindeki üst-alt ilişkileri göstermek üzere girintili çıktıya sahip olmak için ParentId parametresini kullanabilirsiniz.

Parametreler

-Activity

Durum çubuğunun üzerindeki başlıkta metnin ilk satırını belirtir. Bu metin, ilerleme durumu bildirilen etkinliği açıklar.

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

-Completed

İlerleme çubuğunun görünür olup olmadığını gösterir. Bu parametre atlanırsa ilerleme Write-Progress bilgilerini görüntüler.

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

-CurrentOperation

İlerleme çubuğunun altındaki metin satırını belirtir. Bu metin, şu anda gerçekleşen işlemi açıklar.

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

-Id

Her ilerleme çubuğunu diğerlerinden ayıran bir kimlik belirtir. Tek bir komutta birden fazla ilerleme çubuğu oluştururken bu parametreyi kullanın. İlerleme çubuklarının farklı kimlikleri yoksa, bunlar bir seride görüntülenmek yerine üst üste eklenir. Negatif değerlere izin verilmez.

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

-ParentId

Geçerli etkinliğin üst etkinliğini belirtir. Geçerli etkinliğin üst etkinliği yoksa değerini -1 kullanın.

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

-PercentComplete

Tamamlanan etkinliğin yüzdesini belirtir. Tamamlanma yüzdesi bilinmiyorsa veya uygulanmıyorsa değerini -1 kullanın.

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

-SecondsRemaining

Etkinlik tamamlanana kadar kalan tahmini saniye sayısını belirtir. Kalan saniye sayısı bilinmiyorsa veya uygulanmıyorsa değerini -1 kullanın.

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

-SourceId

Kaydın kaynağını belirtir. Bunu Kimlik yerine kullanabilirsiniz, ancak ParentId gibi diğer parametrelerle kullanılamaz.

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

-Status

Durum çubuğunun üzerindeki başlıkta metnin ikinci satırını belirtir. Bu metinde etkinliğin geçerli durumu açıklanmaktadır.

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

Girişler

None

Nesneleri bu cmdlet'e yöneltemezsiniz.

Çıkışlar

None

Bu cmdlet çıkış döndürmez.

Notlar

İlerleme çubuğu görünmüyorsa değişkenin $ProgressPreference değerini denetleyin. Değer olarak ayarlanırsa SilentlyContinueilerleme çubuğu görüntülenmez. PowerShell tercihleri hakkında daha fazla bilgi için bkz . about_Preference_Variables.

cmdlet'in parametreleri System.Management.Automation.ProgressRecord sınıfının özelliklerine karşılık gelir. Daha fazla bilgi için bkz . ProgressRecord Sınıfı.