Как Вы проводите свое время в Интернете?
В основном, ищу нужную информацию
Читаю новости, блоги
Работаю
Развлекаюсь
Играю в онлайн игры
Общаюсь, обмениваюсь информацией
Ищу и скачиваю кино и музыку
Общаюсь в социальных сетях
Популярное
     
    » » » 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 )
    Ответ:*
    Наверх Полезные заметки при работе з компьютером - www.osopen.ru
    Все права на интеллектуальную собственность (в том числе и авторские) перепечатанных текстов имеют своих авторов и принадлежат только им.
    Публикация статьей на данном сайте НЕ является присвоением каких-либо прав на интеллектуальную собственность автора.
    Предоставленные материалы, взяты из Интернета из разных свободных источников и будут удалены по первому требованию законного правообладателя.
    Администрация сайта не несет никакой ответственности.