Ha már időmérés és várakozás, akkor érdemes megemlíteni, hogy szép „progress bar”-t, azaz előrehaladás-jelzőt is megjeleníthetünk PowerShellben a write-progress cmdlet segítségével. Ez főleg akkor hasznos, ha időigényesebb valamelyik parancssorunk, szkriptünk és nyomon szeretnénk követni, hogy ténylegesen hol is tart a futás. Példaként nézzünk egy „analóg” órát:
Óra
12
[oooooooooooooooooooooooooooooooo ]
Perc
53
[oooooooooooooooooooooooooooooooooooooooooooooooooooooo ]
MP
53
[oooooooooooooooooooooooooooooooooooooooooooooooooooo ]
[91] PS C:\>while ($true) {
>> $t = Get-Date
>> $óra = $t.hour
>> $perc = $t.Minute
>> $mp = $t.Second
>> Write-Progress
-Activity "Óra" -status "$óra" -Id 1 -PercentComplete ($óra/2
4*100)
>> Write-Progress
-Activity "Perc" -status "$perc" -Id 2 -ParentId 1 –PercentCo
mplete ($perc/60*100)
>> Write-Progress
-Activity "MP" -status "$mp" -ParentId 2 –PercentComplete ($m
p/60*100)
>> Start-Sleep -Seconds 1
>> }
>>
Sajnos nyomtatásban nem annyira „szép” a kép, nem látszik az ablak tetején a türkizes háttérszínem, de a kis karikákból álló előrehaladás-jelzőt azért látható. Maga a szkript, ami ezt produkálja a karikás sorok alatt található. Egy while ciklusban folyamatosan kiolvasom az aktuális rendszeridőt, szétszedem külön óra, perc, másodpercre. Ezután jön a lényegi rész. Az egyes „csíkoknak” adhatok címkét (Activity paraméter), státusz címkét (Status), azonosító számot (Id paraméter), az előrehaladás értékét (0 és 100 közötti szám, PercentComplete paraméter). Látszik, hogy a kijelzők egymásba is ágyazhatók, ha definiálom a ParentID paraméterrel a „szülő” csíkot. Ekkor a „gyerek” a szülő alatt fog megjelenni, kicsit beljebb.