среда, 16 мая 2018 г.

Powershell Progress Bar


Небольшой пример организации Progress Bar. Скрипт простейший, в дополнительных пояснениях, думаю, не нуждается. Просто три вложенных цикла, в которых на консоль выводится и изменяется Progress Bar

Замечу, что параметр «ParentId» не обязательный. И в примерах я его обычно не встречал. Попробуйте запустить скрипт без него и вы увидите в чём разница. Так же обратите внимание на параметр «Completed». В этом примере я его не использую, но в реальной жизни он может пригодится для того, чтобы в какой-то момент скрыть progress bar

 Для особого шарма можно использовать «SecondsRemaining». Но я пока не понял, как его эффективно использовать. Видь мы никогда не знаем заранее время выполнения скрипта.  Подробнее о «Write-Progress» можно почитать тут: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-progress



for($a = 1; $a -lt 100; $a++ )
{
    Write-Progress -Id 1 -Activity "Main" -Status 'Progress->' -PercentComplete $a -CurrentOperation $a

    for($b = 1; $b -lt 100; $b++ )
    {
        Write-Progress -Id 2 -ParentId 1 -Activity "Sub1" -Status 'Progress->' -PercentComplete $b -CurrentOperation $b
       
        for($c = 1; $c -lt 100; $c++ )
        {
            Write-Progress -Id 3 -ParentId 2 -Activity "Sub2" -Status 'Progress->' -PercentComplete $c -CurrentOperation $c
        }
    }
}


В результате выполнения скрипта, увидите что-то вроде этого.

P.S.
Случайно заметил, что скорость исполнения этого скрипта в Powershell ISE в три раза выше чем в консоли Powershell. От битности это не зависит. Пока не понял, почему скорость выполнения разная. Кстати этот скрипт можно использовать, если есть необходимость погрузить процессор. Но конечно для генерации CPU load есть более правильные средства.

Комментариев нет:

Отправить комментарий