Write-Progress
Menampilkan bilah kemajuan dalam jendela perintah PowerShell.
Sintaks
Default (Default)
Write-Progress
[[-Activity] <String>]
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Deskripsi
Cmdlet Write-Progress 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 variabel otomatis $PSStyle 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. Secara default menjadi120. Nilai minimum adalah 18. -
$PSStyle.Progress.View- Enum dengan nilai,Minimal, danClassic.Classicadalah penyajian yang ada tanpa perubahan.Minimaladalah penyajian minimal satu baris.Minimaladalah default.
Untuk informasi selengkapnya tentang $PSStyle, lihat about_ANSI_Terminals.md.
Nota
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.
Cmdlet Write-Progress mencakup judul bilah status Activity, baris status, dan variabel $i (penghitung dalam perulangan for), yang menunjukkan kelengkapan relatif tugas.
Contoh 2: Menampilkan kemajuan perulangan 'for' berlapis
$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 = 'Inner Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Inner Progress
[oooooooooooooooooo ]
InnerLoop
Contoh ini mengatur tampilan kemajuan ke Classic lalu menampilkan kemajuan dua perulangan for berlapis, masing-masing diwakili oleh bilah kemajuan.
Perintah
Tanpa parameter Id
Nota
Contoh ini mengatur tampilan kemajuan ke Classic, yang menampilkan nilai CurrentOperation Untuk setiap bilah kemajuan. Saat tampilan kemajuan diatur ke Minimal, nilai CurrentOperation tidak ditampilkan.
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
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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 0 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Completed
Menunjukkan apakah bilah kemajuan terlihat. Jika parameter ini dihilangkan, Write-Progress menampilkan informasi kemajuan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-CurrentOperation
Menentukan baris teks di bawah bilah kemajuan dalam tampilan kemajuan Classic. Teks ini menjelaskan operasi yang sedang berlangsung. Parameter ini tidak berpengaruh ketika tampilan kemajuan diatur ke Minimal.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 2 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-ParentId
Menentukan aktivitas induk aktivitas saat ini. Gunakan nilai -1 jika aktivitas saat ini tidak memiliki aktivitas induk.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-PercentComplete
Menentukan persentase aktivitas yang selesai. Gunakan nilai -1 jika persentase selesai tidak diketahui atau tidak berlaku.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-SourceId
Menentukan sumber rekaman. Anda dapat menggunakan ini sebagai ganti Id tetapi tidak dapat digunakan dengan parameter lain seperti ParentId.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Status
Menentukan baris kedua teks dalam judul di atas bilah status. Teks ini menjelaskan status aktivitas saat ini.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
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 variabel $ProgressPreference. 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