Write-Progress
Menampilkan bilah kemajuan dalam jendela perintah PowerShell.
Sintaks
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Deskripsi
Write-Progress
Cmdlet menampilkan bilah kemajuan di jendela perintah PowerShell yang menggambarkan status perintah atau skrip yang sedang berjalan. Anda dapat memilih indikator yang direfleksikan bilah dan teks yang muncul di atas dan di bawah bilah kemajuan.
PowerShell 7.2 menambahkan $PSStyle
variabel otomatis yang digunakan untuk mengontrol bagaimana PowerShell menampilkan informasi tertentu menggunakan urutan escape ANSI. Anggota $PSStyle.Progress
memungkinkan Anda mengontrol penyajian bilah tampilan kemajuan.
$PSStyle.Progress.Style
- String ANSI mengatur gaya penyajian.$PSStyle.Progress.MaxWidth
- Mengatur lebar maksimum tampilan. Default ke120
. Nilai minimum adalah 18.$PSStyle.Progress.View
- Enum dengan nilai,Minimal
danClassic
.Classic
adalah penyajian yang ada tanpa perubahan.Minimal
adalah penyajian minimal satu baris.Minimal
adalah defaultnya.
Untuk informasi selengkapnya tentang $PSStyle
, lihat about_ANSI_Terminals.md.
Catatan
Jika host tidak mendukung Terminal Virtual, $PSStyle.Progress.View
secara otomatis diatur ke Classic
.
Contoh
Contoh 1: Menampilkan kemajuan perulangan For
for ($i = 1; $i -le 100; $i++ ) {
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Perintah ini menampilkan kemajuan perulangan for
yang dihitung dari 1 hingga 100.
Write-Progress
Cmdlet mencakup judul Activity
bilah status, baris status, dan variabel $i
(penghitung dalam for
perulangan), yang menunjukkan kelengkapan relatif tugas.
Contoh 2: Menampilkan kemajuan perulangan Berlapis Untuk
$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
Contoh ini mengatur tampilan kemajuan ke Classic
lalu menampilkan kemajuan dua perulangan berlapis for
, masing-masing diwakili oleh bilah kemajuan.
Write-Progress
Perintah untuk bilah kemajuan kedua mencakup parameter Id yang membedakannya dari bilah kemajuan pertama.
Tanpa parameter Id, bilah kemajuan akan ditumpangkan satu sama lain alih-alih ditampilkan satu di bawah yang lain.
Contoh 3: Menampilkan kemajuan saat mencari string
# 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
}
Perintah ini menampilkan kemajuan perintah untuk menemukan string "bios" di log peristiwa Sistem.
Nilai parameter PercentComplete dihitung dengan membalik jumlah peristiwa yang telah diproses $i
dengan jumlah total peristiwa yang diambil $Events.count
lalu mengalikan hasil tersebut dengan 100.
Contoh 4: Menampilkan kemajuan untuk setiap tingkat proses berlapis
$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
Dalam contoh ini Anda dapat menggunakan parameter ParentId untuk memiliki output inden untuk menampilkan hubungan induk-turunan dalam kemajuan setiap langkah.
Parameter
-Activity
Menentukan baris pertama teks dalam judul di atas bilah status. Teks ini menjelaskan aktivitas yang kemajuannya sedang dilaporkan.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Completed
Menunjukkan apakah bilah kemajuan terlihat. Jika parameter ini dihilangkan, Write-Progress
menampilkan informasi kemajuan.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CurrentOperation
Menentukan baris teks di bawah bilah kemajuan. Teks ini menjelaskan operasi yang sedang berlangsung.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Menentukan ID yang membedakan setiap bilah kemajuan dari yang lain. Gunakan parameter ini saat Anda membuat lebih dari satu bilah kemajuan dalam satu perintah. Jika bilah kemajuan tidak memiliki ID yang berbeda, id tersebut ditumpangkan alih-alih ditampilkan dalam rangkaian. Nilai negatif tidak diperbolehkan.
Type: | Int32 |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParentId
Menentukan aktivitas induk aktivitas saat ini. Gunakan nilai -1
jika aktivitas saat ini tidak memiliki aktivitas induk.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PercentComplete
Menentukan persentase aktivitas yang selesai. Gunakan nilai -1
jika persentase selesai tidak diketahui atau tidak berlaku.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondsRemaining
Menentukan jumlah detik yang diproyeksikan yang tersisa hingga aktivitas selesai. Gunakan nilai -1
jika jumlah detik yang tersisa tidak diketahui atau tidak berlaku.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceId
Menentukan sumber rekaman. Anda dapat menggunakan ini sebagai pengganti Id tetapi tidak dapat digunakan dengan parameter lain seperti ParentId.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Status
Menentukan baris kedua teks dalam judul di atas bilah status. Teks ini menjelaskan status aktivitas saat ini.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
None
Anda tidak dapat menyalurkan objek ke cmdlet ini.
Output
None
Cmdlet ini tidak mengembalikan output.
Catatan
Jika bilah kemajuan tidak muncul, periksa nilai $ProgressPreference
variabel. Jika nilai diatur ke SilentlyContinue
, bilah kemajuan tidak ditampilkan. Untuk informasi selengkapnya tentang preferensi PowerShell, lihat about_Preference_Variables.
Parameter cmdlet sesuai dengan properti kelas System.Management.Automation.ProgressRecord . Untuk informasi selengkapnya, lihat Kelas ProgressRecord.
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk