Як організувати кольорове меню в PowerShell скрипте

Розглянемо приклад організації простого кольорового меню для PowerShell, що дозволяє користувачеві зручно вибрати одну з наявних опцій виконуваного скрипта. Даний скрипт повинен надавати користувачеві кілька варіантів вибору, контролювати обрану опцію і, в залежності від вибору, виконувати подальші дії.

Припустимо наш простий скрипт повинен надати користувачеві можливість запуску або зупинки певної служби Windows.

Вивести список пунктів меню, пропонованих користувачу, можна так:

Write-Host '1. Start Windows Update service '
Write-Host '2. Stop Windows Update service '
Write-Host '3. Exit '

Далі запропонуємо користувачеві вибрати пункт, набравши його номер:

$ Selected_menu_item = Read-Host 'Select menu item'

Потім вибір користувача опрацюємо за допомогою оператора switch:

Switch ($ selected_menu_item)
1 net start wuauserv
2 net stop wuauserv
3 Write-Host 'Exit'; exit
default Write-Host 'Incorrect input' -ForegroundColor Red

Запускаємо скрипт і перевіряємо його працездатність.

Все працює нормально, ось тільки уявлення меню залишає бажати кращого. Хочеться чогось більш "ошатного" і зручного.

Можна спробувати створити більш красиве меню з кольоровим заголовком, пунктами і рамочкою вручну, але це досить складно, тому що доведеться вручну вираховувати розмір рамки таблиці в залежності від довжини текстових полів. Набагато простіше скористатися готовим скриптом. Мені в галереї Technet сподобалася готова функція Create colorful PowerShell Menu Function (Https://gallery.technet.microsoft.com/scriptcenter/Create-colorful-PowerShell-8689c5b2), яка володіє всім необхідним функціоналом. Зберігаємо код функції в файл з ім'ям color_menu.psm1 і імпортуємо його в сесію PoSh:
Import-Module C: \ PS \ color_menu.psm1

Функція побудови кольорового викликається таким чином:

CreateMenu -Title "Windows Update Script" -MenuItems "Start Windows Update service", "Stop Windows Update service", "Exit" -TitleColor Red -LineColor Cyan -MenuItemColor Yellow

Отже, буквально за пару хвилин ми створили симпатичне кольорове меню для свого PowerShell скрипта. Таким скриптом надалі з комфортом зможе користуватися не тільки його творець, але і прості користувачі.