Как Вы проводите свое время в Интернете?
В основном, ищу нужную информацию
Читаю новости, блоги
Работаю
Развлекаюсь
Играю в онлайн игры
Общаюсь, обмениваюсь информацией
Ищу и скачиваю кино и музыку
Общаюсь в социальных сетях
Немного рекламы...
 
» » » Powershell: консольное меню в скриптах

0
Powershell: консольное меню в скриптах
В процессе работы в Powershell, а особенно в процессе написания скриптов, вы у вас может возникнуть необходимость дать пользователю возможность выбора. Например, вы разрабатываете скрипт конфигурации, который будет использовать другой администратор, или простой сотрудник. Возможно какой то параметр конфигурации сети зависит от местоположения пользователя, который запустил скрипт, и вы хотите дать ему возможность выбора настроки с помощью меню. 
Вот один из возможных вариантов решения этой проблемы без прибегания к графическим интрументам, или WinForms.
 
В Powershell мы используем командлет Read-Host, чтобы получить данные от пользователя. 
PS S:\> $menu=@"
>> 1 Показать информацию о компьютере
>> 2 Показать информацию о поступившей почте
>> 3 Перезапустить службу печати
>> Q Выйти
>>
>> Выберите номер задачи или нажмите Q для выхода
>> "@
>>
PS S:\> $r=Read-Host $menu
1 Показать информацию о компьютере
2 Показать информацию о поступившей почте
3 3 Перезапустить службу печати
Q Выйти
Выберите номер задачи или нажмите Q для выхода
PS S:\> $r
3
Потом мы можем использовать оператор Switch, чтобы сделать что нибудь, опираясь на переменную $r. Ниже следует пример скрипта, который включает в себя относительно простую функцию отображения меню.
Function Show-Menu {
 
Param(
[Parameter(Position=0,Mandatory=$True,HelpMessage="Enter your menu text")]
[ValidateNotNullOrEmpty()]
[string]$Menu,
[Parameter(Position=1)]
[ValidateNotNullOrEmpty()]
[string]$Title="Menu",
[switch]$ClearScreen
)
 
if ($ClearScreen) {Clear-Host}
 
#build the menu prompt
$menuPrompt=$title
#add a return
$menuprompt+="`n"
#add an underline
$menuprompt+="-"*$title.Length
$menuprompt+="`n"
#add the menu
$menuPrompt+=$menu
 
Read-Host -Prompt $menuprompt
 
}
 
#define a menu here string
$menu=@"
1 Show info about a computer
2 Show info about someones mailbox
3 Restarts the print spooler
Q Quit
 
Select a task by number or Q to quit
"@
 
#Keep looping and running the menu until the user selects Q (or q).
Do {
#use a Switch construct to take action depending on what menu choice
#is selected.
Switch (Show-Menu $menu "My Help Desk Tasks" -clear) {
"1" {Write-Host "run get info code" -ForegroundColor Yellow
sleep -seconds 2
}
"2" {Write-Host "run show mailbox code" -ForegroundColor Green
sleep -seconds 5
}
"3" {Write-Host "restart spooler" -ForegroundColor Magenta
sleep -seconds 2
}
"Q" {Write-Host "Goodbye" -ForegroundColor Cyan
Return
}
Default {Write-Warning "Invalid Choice. Try again."
sleep -milliseconds 750}
} #switch
} While ($True)
Также рекомендуем:
Добавить комментарий
Имя:*
E-Mail:
Комментарий:
b
i
u
s
|
left
center
right
|
emo
url
leech
color
|
hide
quote
translit
Вопрос:
Мальчику 18 лет, на дворе 2028 год, в котором году он родился ? (ответ цифрами ХХ10 )
Ответ:*
Наверх Полезные заметки при работе с компьютером - OsOpen.ru
Все права на интеллектуальную собственность (в том числе и авторские) перепечатанных текстов имеют своих авторов и принадлежат только им.
Публикация статьей на данном сайте НЕ является присвоением каких-либо прав на интеллектуальную собственность автора.
Предоставленные материалы, взяты из Интернета из разных свободных источников и будут удалены по первому требованию законного правообладателя.
Администрация сайта не несет никакой ответственности.