Выбрать один из предложенных вариантов всегда проще и надежнее, чем вводить необходимое значение вручную. Организовать выбор можно с помощью меню, которое достаточно просто создать и добавить в скрипт PowerShell.
В качестве примера создадим небольшой скрипт, который в зависимости от выбора пользователя выводит список сервисов — запущенных, остановленных или выключенных.
Сначала выводим заголовок меню:
Write-Host
Write-Host ″Menu″ -BackgroundColor White -ForegroundColor Red
Write-Host
Затем выводим список пунктов меню:
Write-Host ″1. List running services″ -ForegroundColor Green
Write-Host ″2. List stopped services″ -ForegroundColor Green
Write-Host ″3. List disabled services″ -ForegroundColor Green
Write-Host ″4. Exit″ -ForegroundColor Green
Write-Host
Предлагаем пользователю ввести выбранный пункт:
$choice = Read-Host ″Select the menu item″
И обрабатываем его выбор с помощью оператора switch:
Switch($choice){
1{Get-WmiObject win32_service | where {$_.state -eq ″running″} | ft Name, DisplayName -a}
2{Get-WmiObject win32_service | where {$_.state -eq ″stopped″} | ft Name, DisplayName -a}
3{Get-WmiObject win32_service | where {$_.startmode -eq ″disabled″} | ft Name, DisplayName -a}
4{Write-Host ″Exit″; exit}
default {Write-Host ″Wrong choice, try again.″ -ForegroundColor Red}
}
В результате получается примерно такая картина.
Таким образом можно создавать как простые, так и более сложные, многоуровневые меню. И если вашими скриптами кроме вас пользуются и другие люди, то такой подход может очень сильно облегчить им жизнь и избавить вас от лишних вопросов.
А как сделать чтобы при неправильном ответе, он опять просил ввести данные, а не заканчивал скрипт?