Write-Progress
PowerShell komut penceresinde ilerleme çubuğu görüntüler.
Sözdizimi
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ğeridir120
. En düşük değer 18'dir.$PSStyle.Progress.View
- ve değerleriniMinimal
Classic
iç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 $PSStyle
daha fazla bilgi için bkz . about_ANSI_Terminals.md.
Not
Konak Sanal Terminal'i desteklemiyorsa, $PSStyle.Progress.View
otomatik olarak olarak Classic
ayarlanı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.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-CurrentOperation
İlerleme çubuğunun altındaki metin satırını belirtir. Bu metin, şu anda gerçekleşen işlemi açıklar.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | Int32 |
Position: | 2 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ParentId
Geçerli etkinliğin üst etkinliğini belirtir. Geçerli etkinliğin üst etkinliği yoksa değerini -1
kullanın.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-PercentComplete
Tamamlanan etkinliğin yüzdesini belirtir. Tamamlanma yüzdesi bilinmiyorsa veya uygulanmıyorsa değerini -1
kullanın.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-SourceId
Kaydın kaynağını belirtir. Bunu Kimlik yerine kullanabilirsiniz, ancak ParentId gibi diğer parametrelerle kullanılamaz.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | String |
Position: | 1 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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 SilentlyContinue
ilerleme ç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ı.
İlişkili Bağlantılar
PowerShell