Рубрики: PowerShell

Windows Powershell – Ввод с клавиатуры

PowerShellPowerShellДоброго дня! Продолжаем тему Windows Powershell. В прошлой статье мы научились создавать и вызывать функции. При этом, мы задействовали ожидание ввода с клавиатуры. Давайте разберемся как в Powershell реализовать ввод с клавиатуры.

Windows Powershell – ввод с клавиатуры

Вспомним наш пример:

write-host "Попытка выполнить внешнюю функцию."
write-host "Пожалуйста, введите значение, которое вы хотите узнать:" 

write-host "1. Результат выполнения функции" 
write-host "2. Дату время и погоду" 
write-host "3. Дату и время"

$ex=read-host

Ключевая строка, которая отвечает за ожидание ввода пользователя – самая последняя. read-host – отвечает за прием входящих введенных символов. В нашем случае обыграно так, что ввод записывается сразу в переменную. Это было необходимо для того, чтобы выбрать одно из трех заранее известных значений. Достаточно простой пример, и в принципе все понятно. Так же и понятно как работает read-host.

Давайте попробуем усложнить. Сделаем так, что если мы ввели значение, которое не относится ни к одному варианту, то выведем ошибку об этом. Для этого преобразуем наш скрипт следующим образом:

. .\try_execute_function.ps1
 
write-host "Попытка выполнить внешнюю функцию."
write-host "Пожалуйста, введите значение, которое вы хотите узнать:" 
 
write-host "1. Результат выполнения функции" 
write-host "2. Дату время и погоду" 
write-host "3. Дату и время"
 
$ex=read-host
 
if ($ex -eq "1" -or $ex -eq "2" -or $ex -eq "3") {
    write-host "Выполняю функцию:"
}
elseif ([string]::IsNullOrEmpty($ex)) { 
 write-host "Вы указали неверный параметр." 
 break;
}
switch ($ex){
 
 "1"{
  Execute-Function
    }
 
 "2"{
  Get-DateOne
    }
    
 "3"{
  Get-DateTwo
    }
   Default
      {
         write-host "Такой функции не существует."
      }
}   

Что мы сделали? Во-первых, спасибо Дмитрию, оставившему комментарий в прошлой статье, который подсказал, что файл с функциями можно подключать только в начале файла. Во-вторых запомните именно такой синтаксис в операторе if. Если вы попробуете реализовать кастомный exception с условием -ne (not equals), то условие срабатывать не будет. Это связано с особенностями семантики powershell. В-третьих, теперь если мы ничего не введем, то у нас вылетит ошибка “Вы ничего не выбрали!”. В четвертых, у нас целых 2 исключения:

  1. Первое находится в elseif – выпадет в случае, если мы ничего не ввели.
  2. Второе находится в Default – это блок, который выводит значение по умолчанию, если в оператор switch прилетело значение, которого в нем нет.

Так же мы добавили завершение скрипта, если мы ничего не ввели – break;

Итак, давайте попробуем запустить наш скрипт:

Powershell - ввод с клавиатурыPowershell - ввод с клавиатуры

Чтож, надеемся материал был для вас полезен. Сегодня вы научились работать с оператором read-host и немного изучили if statement, создав свою ошибку. На этом все! Оставляйте свои комментарии, если у вас остались вопросы. Подписывайтесь на нашу группу вк и Youtube-канал! Спасибо за внимание!

0

Автор публикации

не в сети 1 час

Vapi

0
Комментарии: 19Публикации: 104Регистрация: 14-04-2017
Vapi

Поделиться
Опубликовал
Vapi

Новаястатья

SQL – получаем активные соединения

Добрый день. В этой статье мы с вами научимся писать запросы, которые выводят активные соединения…

2 недели назад

Готовые шаблоны/шапки YouTube PSD #5

Здравствуйте, уважаемые читатели! Было принято решение 12 числа каждого месяца специально для вас делать ежемесячный…

2 недели назад

HTML – IMG

Всем привет дорогие читатели. В этом посте мы с вами узнаем как вставить картинку в…

2 недели назад

CSS – Отступы

Сегодня мы поговорим про отступы в CSS. В предыдущих статьях неоднократно они использовались для примеров,…

2 недели назад

JavaScript – меняем CSS

Немного отойдем от изучения powershell и добавим JavaScript. Сегодня мы научимся менять CSS на странице…

2 недели назад

Powershell – Операторы сравнения

Уже неоднократно в наших статьях встречались операторы сравнения, например, когда мы разбирали Where-Object. В этой…

2 недели назад
Авторизация
*
*

Login form protected by Login LockDown.


Регистрация
*
*
*
Пароль не введен
Генерация пароля