Вот несколько способов создания панели загрузки в PowerShell:
Метод 1: использование символов ASCII
Вы можете создать полосу загрузки, используя символы ASCII, отображая серию символов, которые постепенно заполняют полосу по мере завершения процесса. Вот пример фрагмента кода:
$progressBarWidth = 20
$progress = 0
while ($progress -lt 100) {
$completed = [math]::Floor(($progress / 100) * $progressBarWidth)
$remaining = $progressBarWidth - $completed
Write-Progress -Activity 'Loading' -Status "[$('-' * $completed)]$('-' * $remaining)" -PercentComplete $progress
# Simulate progress by incrementing $progress
$progress += 10
Start-Sleep -Milliseconds 500
}
Метод 2: использование Windows Forms
Другой подход — использовать Windows Forms для создания графической панели загрузки. Этот метод обеспечивает большую гибкость с точки зрения настройки. Вот пример фрагмента кода:
Add-Type -AssemblyName System.Windows.Forms
$progressBar = New-Object System.Windows.Forms.ProgressBar
$progressBar.Minimum = 0
$progressBar.Maximum = 100
$progressBar.Step = 10
$form = New-Object System.Windows.Forms.Form
$form.Controls.Add($progressBar)
$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = 500
$timer.Add_Tick({
if ($progressBar.Value -lt $progressBar.Maximum) {
$progressBar.PerformStep()
}
else {
$timer.Stop()
$form.Close()
}
})
$timer.Start()
$form.ShowDialog()
Метод 3: использование Write-Host
Если вы предпочитаете простую текстовую панель загрузки, вы можете использовать Write-Host для обновления прогресса в консоли. Вот пример фрагмента кода:
$progressBarWidth = 20
$progress = 0
while ($progress -lt 100) {
$completed = [math]::Floor(($progress / 100) * $progressBarWidth)
$remaining = $progressBarWidth - $completed
Write-Host "`r[$('-' * $completed)]$('-' * $remaining) $progress%"
# Simulate progress by incrementing $progress
$progress += 10
Start-Sleep -Milliseconds 500
}
Write-Host "`r[Complete] 100%"