PowerShell Progress Bar

PowerShell Progress Bar
Niektóre polecenia lub operacje wymagają czasu na wykonanie i do czasu wykonania nie wyświetlają żadnych wyników. Taka sytuacja może stworzyć punkt myślenia w głowie użytkownika, że ​​albo polecenie funkcjonuje lub rozłącza się. Aby przezwyciężyć ten problem, można zastosować pasek postępu, aby uzyskać status bieżącego polecenia.

W tym artykule zawiera szczegółowy przewodnik, aby uzyskać pasek postępu w twoich poleceń PowerShell. PowerShell obsługuje kilka CMDLET i funkcji, aby wykonać dowolne zadanie. W przypadku paska postępu wykonana jest cmdlet progresji PowerShell, aby osiągnąć status postępu poleceń. Nauczysz się podstawowych zrozumienia i pracy CMDLET i jego obsługiwanych parametrów.

Jak można uzyskać pasek postępu PowerShell

Jak wspomniano wcześniej, pasek postępu PowerShell można uzyskać za pomocą cmdlet progresji zapisu. Polecenie Funkcje PowerShell w składni podanej poniżej: poniżej:

> Progresja zapisu

Powyższa składnia zależy od obsługi parametrycznej, a parametry obsługiwane przez polecenia pisma są zdefiniowane w następujący sposób:

  • Działalność: Ten parametr pozwala na pokazanie wiersza powyżej/przed paskiem postępu.
  • Zakończony: Wskazuje widoczność paska postępu.
  • Aktualna operacja: To pokazuje linię po/poniżej paska postępu.
  • Status: Wartości przekazane w tym parametrze są wyświetlane na pasku postępu.
  • ID: Używany do identyfikacji pasków postępu i tej opcji jest używana, w której tworzone jest wiele pasków postępu.
  • ID rodzica: Oznacza działalność macierzystą obecnie trwającej działalności.
  • Procent kompletny: Przedstawia wartość procentową, która pokazuje, ile procent aktywności zostało zakończonych.
  • ŹRÓDŁOD: Ten parametr określa źródło rekordu, a ten parametr nie może być używany z nadrzędnym, ponieważ oba prowadzą do tego samego znaczenia.

Jak uzyskać pasek postępu PowerShell

Pasek postępu PowerShell Funkcje na podstawie obsługiwanych przez program zapisu. Ta sekcja zawiera przykłady, które zapewniają użycie programu zapisu.

Przykład 1: Pasek postępu z pętlą foreach
Powiedzmy, że chcemy uzyskać pasek postępu na Proces show CMDLET. W tym celu tworzymy skrypt PowerShell, w którym napiszymy kilka poleceń, które pomogłyby w tym.

W przypadku trybu scenariusza otwórz PowerShell ISE jako administrator, wyszukując go ze paska wyszukiwania Windows:

Stworzyliśmy pasek postępu, który pokazuje proces, który ma wartość obsługi większą lub równą 1000.

Skrypt został nazwany postęp.PS1 i zawiera następujące wiersze:

Pierwsza linia filtruje procesy, które mają uchwyty większe lub równe 1000 a wartość jest przechowywana w zmiennej wymienionej $ proc.

  • Druga linia liczy $ proc i przechowuje się w zmiennej $ total_count (Pomoże to uzyskać procent)
  • Zmienna ($ i) jest inicjowany
  • Pętla Foreach zaczęła od poszukiwania każdego procesu ($ p) W zmiennej $ proc
  • Pętla zwiększa się o 1 po każdej iteracji
  • $ procent oblicza procent procesów po każdej iteracji.
  • CMDLET jest stosowany z zapisem -Działalność I -Status parametry
  • Sleep startowy CMDLET służy do uzyskania każdej iteracji po 200 milisekundach.
$ Proc = Process Process | Where -Obiekt obsługuje -Ge 1000
$ total_proc = $ proc.Liczyć
$ i = 0
Foreach ($ p in $ proc)
$ i = $ i+1
$ procent = ($ i/$ total_proc)*100
Pisanie -aktywność $ p -status „$ procent %” -procentowy procent $
Start -Sleep -Milliiseconds 200

Aby uruchomić skrypt, otwórz PowerShell i przejdź do katalogu, w którym zapisany jest skrypt. Wykonaliśmy postęp.PS1 skrypt umieszczony w C: \ Scripts katalog i dane wyjściowe pokazano poniżej.

> .\postęp.PS1

Przykład 2: Uzyskanie paska postępu dla pętli
W tym przykładzie. Pętla jest traktowana jako demonstracyjny wybór, aby pokazać postęp. Aby uzyskać pomoc, scenariusz Do.PS1 jest używany, który zawiera wykonywanie pętli z cmdletem progresywnym:

  • Zmienna $ i jest inicjowany na 100: <$ i = 100>
  • W każdej iteracji wartość jest zmniejszona przez „1„: <$ i ->
  • Pętla działa, aż wartość będzie większa niż 10: <$ i -GT 10>
  • W treści pętli dla zapisu jest stosowany wraz z aktywnością, statusem i procentem parametrów kompletnych. Ponadto Sleep startowy CMDLET w kodzie jest wykonywanie każdej iteracji za pomocą 150 milisekund w celu lepszego przeglądu paska postępu.
dla ($ i = 100; $ i -GT 10; $ i--)

Zapis -progress -aktywność „zejście” -Status „$ i%” -PercentComplete $ i
Start -Sleep -Milliiseconds 150

W celu wykonania skryptu przejdź do terminalu do miejsca, w którym zapisany jest skrypt. Wykonaliśmy Do.PS1 Jak widać na poniższym obrazku:

> .\Do.PS1

Przykład 3: Uzyskaj pasek postępu za pomocą pętli
W tym przykładzie pętla While jest używana tutaj, aby uzyskać pasek postępu w PowerShell. Nowy skrypt PowerShell jest tworzony o nazwie chwila.PS1 To zawiera następujące wiersze kodu z opisem podanym poniżej:

  • Pierwsza linia przechowuje procesy, które mają procesory większe lub równe 4:
  • Druga linia liczy procesy wyodrębnione w pierwszej linii
  • $ i Zmienna jest inicjowana na 0:
  • Podczas uruchamiania pętli i ustawiony na warunek $ i -LT 100:
  • Działalność I Status parametry są ustawione na Schodzenie I $ i odpowiednio:
  • Sleep startowy CMDLET wykonuje każdą iterację z odstępem 150 milisekund:
  • Ostatni wiersz kodu zwiększa $ i przez 1:
$ procesy = Process Process | Where -Obiekt CPU -GE 4
$ total = $ procesy.Liczyć
$ i = 0
While ($ i -LT 100)

Zapis -progress -aktywność „Ascending” -Status „$ i%” -PercentComplete $ i
Start -Sleep -Milliiseconds 150
$ i++

Po wykonaniu skryptu obserwujesz pasek postępu, jak pokazano na poniższym obrazku:

> .\chwila.PS1

Wniosek

Funkcjonalność paska postępu jest praktykowana poprzez uzyskanie statusu postępu dowolnego zadania. Pomocne jest poszukiwanie statusu dowolnego zadania, ponieważ mogą istnieć polecenia, które wymagają czasu na wykonanie. Aby uzyskać pasek postępu, PowerShell obsługuje cmdlet progresji zapisu. W tym artykule pokazuje sposób dodania paska postępu za pomocą cmdlet progresji zapisu. Funkcjonalność CMDLET-program zapisu można rozszerzyć za pomocą zestawu parametrów obsługiwanych przez program zapisu. Ponadto ten przewodnik zawiera kilka przykładów, które pokazują użycie programu zapisu w różnych scenariuszach.