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.

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

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 menampilkan kemajuan dua perulangan for berlapis, yang 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.

Contoh 3: Menampilkan kemajuan saat mencari string

# Use Get-EventLog to get the events in the System log and store them in the $Events variable.
$Events = Get-EventLog -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

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

Kumpulan parameter

(All)
Position:0
Wajib:True
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

Kumpulan 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. Teks ini menjelaskan operasi yang sedang berlangsung.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan 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

Kumpulan 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

Kumpulan 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

Kumpulan 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

Kumpulan 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

Kumpulan 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

Kumpulan 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.