Bagikan melalui


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 menjadi 120. Nilai minimum adalah 18.
  • $PSStyle.Progress.View - Enum dengan nilai, Minimal, dan Classic. Classic adalah penyajian yang ada tanpa perubahan. Minimal adalah penyajian minimal satu baris. Minimal adalah 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 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.

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 PercentComplete dihitung dengan membalikkan jumlah peristiwa yang telah diproses dengan jumlah total peristiwa yang diambil lalu mengalikan hasilnya 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.

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 System.Management.Automation.ProgressRecord. Untuk informasi selengkapnya, lihat Kelas ProgressRecord.