none
Проверка на корректность введенной информации RRS feed

  • Вопрос

  • Добрый день.

    Есть скрипт в части которого идет запрос имен доступных серверов, вывод их пользователю и далее ожидается ввода имени сервера с которым пользователь хочет работать.

    $ExServerList = Get-MailboxServer
    write-host "Exchange Servers: $ServerList"
    $ExServer = Read-Host "Exchange server:"

    Всё работает, хочу сделать проверку на корректность введенной инфы.

    т.е. Например скрипт выводит на экран 3 сервера:

    Exchange Servers: Server1 Server2 Server5

    И мне надо чтобы только при написании Server1 или Server2 или Server5 скрипт шел дальше, а при вводе не существующего сервера или же ошибки в написании, опять запрашивал ввод имени сервера.

    Пытался сделать что то в таком духе

    do   { $ExServer = Read-Host "Exchange server:" } 
    until (($ExServerList -match $ExServer ) -eq $true)

    Но тогда при введении любой буквы слова содержащегося в переменной $ExServer (и её совпадении с именем сервера в $ExServerList) возвращается $true, т.е. скрипт проходит дальше, но в переменной $ExServer не полное правильное имя сервера, а только его часть. Поскольку имена разделены пробелами, то можно просто Enter ввести и это тоже срабатывает.

    Серверов в переменной $ExServerList может быть и 1 и 10 и больше. Верхний или нижний регистр для $ExServer роли не играет.

    Суть вопроса, что написать чтобы происходила необходимая мне проверка?

    27 июля 2015 г. 8:17

Ответы

  • $ExServerList = Get-MailboxServer | Foreach {$_.Name}
    write-host "Exchange Servers: $ExServerList"
    do   { $ExServer = Read-Host "Exchange server" } 
    until ($ExServerList -eq $ExServer)

    • Помечено в качестве ответа AlexunderG 27 июля 2015 г. 8:49
    27 июля 2015 г. 8:45
    Отвечающий