Jak zorganizować menu kolorów w skrypcie PowerShell

Rozważ przykład zorganizowania prostego menu kolorów dla programu PowerShell, który pozwala użytkownikowi wygodnie wybrać jedną z dostępnych opcji dla wykonanego skryptu. Ten skrypt powinien zapewnić użytkownikowi kilka opcji, kontrolować wybraną opcję i, w zależności od wyboru, wykonywać dalsze działania.

Załóżmy, że nasz prosty skrypt powinien umożliwić użytkownikowi uruchomienie lub zatrzymanie określonej usługi Windows.

Lista pozycji menu oferowanych użytkownikowi może być wyświetlana w następujący sposób:

Host zapisu 1. Uruchom usługę Windows Update ”
Write-Host '2. Zatrzymaj usługę Windows Update ”
Host zapisu 3. Wyjdź

Następnie zapraszamy użytkownika do wybrania elementu poprzez wybranie jego numeru:

$ selected_menu_item = Read-Host 'Wybierz element menu'

Następnie przetwarzamy wybór użytkownika za pomocą instrukcji switch:

Przełącznik ($ selected_menu_item)
1 net start wuauserv
2 net stop wuauserv
3 Wyjście hosta zapisu; wyjście
default Write-Host 'Nieprawidłowe wejście' -ForegroundColor Red

Uruchom skrypt i sprawdź jego wydajność.

Wszystko działa dobrze, tylko widok menu pozostawia wiele do życzenia. Chcę czegoś bardziej „inteligentnego” i wygodnego.

Możesz spróbować ręcznie stworzyć piękniejsze menu z kolorowym nagłówkiem, akapitami i ramką, ale jest to dość czasochłonne, ponieważ będziesz musiał ręcznie obliczyć rozmiar ramki tabeli w zależności od długości pól tekstowych. O wiele łatwiej jest użyć gotowego skryptu. Podobała mi się gotowa funkcja w Galerii Technet Utwórz kolorową funkcję menu programu PowerShell (https://gallery.technet.microsoft.com/scriptcenter/Create-colorful-PowerShell-8689c5b2), który ma wszystkie niezbędne funkcje. Zapisz kod funkcji w pliku o nazwie color_menu.psm1 i zaimportuj go do sesji PoSh:
Moduł importu C: \ PS \ color_menu.psm1

Funkcja drukowania kolorów jest nazywana w ten sposób:

CreateMenu -Tytuł „Skrypt Windows Update” -MenuItems „Uruchom usługę Windows Update”, „Zatrzymaj usługę Windows Update”, „Wyjdź” -TitleColor Czerwony -LineColor Cyan -MenuItemColor Żółty

Tak więc w ciągu zaledwie kilku minut stworzyliśmy ładne menu kolorów dla naszego skryptu PowerShell. W przyszłości nie tylko jego twórca, ale także zwykli użytkownicy będą mogli z łatwością korzystać z takiego skryptu.