PowerShell
Korzystanie z paska postępu
Szukaj…
Wprowadzenie
Pasek postępu może być używany do pokazania, że coś jest w trakcie procesu. Jest to oszczędzająca czas i zręczna funkcja, którą powinieneś mieć. Paski postępu są niezwykle przydatne podczas debugowania, aby dowiedzieć się, która część skryptu jest wykonywana, i satysfakcjonują osoby uruchamiające skrypty, aby śledzić, co się dzieje. Zwykle wyświetla się pewien postęp, gdy skrypt zajmuje dużo czasu. Gdy użytkownik uruchamia skrypt i nic się nie dzieje, zaczyna się zastanawiać, czy skrypt został uruchomiony poprawnie.
Proste użycie paska postępu
1..100 | ForEach-Object {
Write-Progress -Activity "Copying files" -Status "$_ %" -Id 1 -PercentComplete $_ -CurrentOperation "Copying file file_name_$_.txt"
Start-Sleep -Milliseconds 500 # sleep simulates working code, replace this line with your executive code (i.e. file copying)
}
Należy pamiętać, że dla zwięzłości ten przykład nie zawiera kodu wykonawczego (symulowanego za pomocą Start-Sleep
). Można go jednak uruchomić bezpośrednio takim, jakim jest, a następnie modyfikować i bawić się nim.
Oto jak wygląda wynik w konsoli PS:
Zastosowanie wewnętrznego paska postępu
1..10 | foreach-object {
$fileName = "file_name_$_.txt"
Write-Progress -Activity "Copying files" -Status "$($_*10) %" -Id 1 -PercentComplete ($_*10) -CurrentOperation "Copying file $fileName"
1..100 | foreach-object {
Write-Progress -Activity "Copying contents of the file $fileName" -Status "$_ %" -Id 2 -ParentId 1 -PercentComplete $_ -CurrentOperation "Copying $_. line"
Start-Sleep -Milliseconds 20 # sleep simulates working code, replace this line with your executive code (i.e. file copying)
}
Start-Sleep -Milliseconds 500 # sleep simulates working code, replace this line with your executive code (i.e. file search)
}
Należy pamiętać, że dla zwięzłości ten przykład nie zawiera kodu wykonawczego (symulowanego za pomocą Start-Sleep
). Można go jednak uruchomić bezpośrednio takim, jakim jest, a następnie modyfikować i bawić się nim.
Oto jak wygląda wynik w konsoli PS: