Đương nhiên không ai muốn chờ đợi bao giờ cả, tất cả chúng ta đều muốn công việc hoàn thành ngay lập tức, nhưng không phải lúc nào điều đó cũng khả thi. Mọi thứ đều cần thời gian và bạn phải chấp nhận đợi một khoảng thời gian để quá trình hoàn tất, đó là lý do tại sao cần tạo progress bar trong PowerShell để người dùng có thể nhận ra rằng quá trình đang diễn ra.
Trong thực tế, PowerShell thường phải tương tác với nhiều hệ thống khác nhau và có lịch làm việc riêng. Khi kịch bản mất nhiều thời gian, và người viết kịch bản nhận thức được điều này, thêm các chỉ thị quan trọng để người dùng nhận biết rằng có gì đó đang xảy ra thay vì nhìn chăm chú vào con trỏ nhấp nháy trong vài phút.
Người viết script có nhiều cách để tạo các tín hiệu trực quan để người dùng nhận biết những điều đang diễn ra trong nền. Có thể sử dụng các tài liệu tham khảo như Write-Verbose hoặc Write-Information để thông báo trạng thái. Hoặc có thể sử dụng thanh Progress Bar tích hợp sẵn trong PowerShell, hỗ trợ hiển thị thông báo và biểu đồ đồ thị tỷ lệ phần trăm công việc đã thực hiện.
Giả sử một công việc trong kịch bản của bạn mất vài phút. Thay vì buộc người dùng nhìn chăm chú vào con trỏ nhấp nháy, bạn có thể tạo Progress Bar trong PowerShell.
Trước hết, cần xác nhận rằng thanh Progress Bar bạn tạo sẽ được hiển thị. Để kiểm soát khả năng hiển thị của Progress Bar, PowerShell có một biến tự động gọi là $ProgressPreference. Mặc định, biến này được đặt là Continue, nhưng nếu vì một lý do nào đó biến được đặt là SilentlyContinue, thanh Progress Bar sẽ không được hiển thị.
Sau khi đã xác nhận, bạn có thể thấy thanh Progress Bar. Thanh này bao gồm 3 phần được biểu diễn bằng các tham số lệnh của Write-Progress cmdlet: tiêu đề của nhiệm vụ (Activity - Hoạt động), trạng thái của công việc (Status - Trạng thái), và phần trăm hoàn thành công việc (PercentComplete).
Để mở và cập nhật thanh progress bar khi nó đang chạy, bạn sử dụng lệnh Write-Progress cmdlet. Nếu Write-Progress chạy độc lập, chỉ hiển thị quá trình chạy lâu (long-running process). Để kiểm tra thanh progress bar, hãy tạo một vòng lặp vô hạn để chạy liên tục.
while ($true) { write-progress -Activity 'Thực hiện điều gì đó'; sleep 1 }
Trong hình trên, bạn có thể thấy chỉ có một hoạt động duy nhất. Nhưng bạn có thể thêm một số công việc phụ vào đó.
$i = 0
while ($true) {
Write-Progress -Activity 'Đang thực hiện' -Status 'Đã thực hiện $i lần'
sleep 1
$i++
}
Khi đoạn mã này chạy, bạn sẽ thấy một “subactivity” xuất hiện ở phía dưới, hiển thị thông tin về những gì đang diễn ra. Bước tiếp theo là thêm chỉ số phần trăm hoàn thành của nhiệm vụ.
$totalTimes = 10
$i = 0
for ($i=0; $i -lt $totalTimes; $i++) {
$percentComplete = ($i / $totalTimes) * 100
Write-Progress -Activity 'Thực hiện điều gì đó' -Status 'Đã thực hiện $i lần' -PercentComplete $percentComplete
sleep 1
}
Bây giờ bạn đã hoàn tất quá trình tạo Progress Bar trong PowerShell. Sử dụng 3 tham số kèm theo Write-Progress là đủ để bắt đầu xây dựng một thanh progress bar trực quan.
Trong bài viết này, Mytour đã hướng dẫn cách tạo Progress Bar trong PowerShell. Đây là một công cụ hữu ích không chỉ cho việc tạo progress bar mà còn giúp người dùng Trim SSD bằng Powershell mà không gặp khó khăn nào. Nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp, bạn có thể để lại ý kiến của mình trong phần bình luận dưới bài viết, Mytour sẽ trả lời sớm nhất có thể.