2017-01-20 9 views
1

Я пишу скрипт с PowerShell, и в какой-то момент мне нужно было использовать ValidateSet для параметров функции. Это очень хорошая функция, но мне нужно нечто большее.Параметр параметров Powershell с ValidateSet

Например

Function JustAnExample 
{ 
    param(
     [Parameter(Mandatory=$false)][ValidateSet("IPAddress","Timezone","Cluster")] 
     [String]$Fields 
    ) 

    write-host $Fields 
} 

Так что этот фрагмент кода позволяет мне выбрать один элемент из списка, как этот
JustAnExample -Fields IPAddress

, а затем выводит его на экран. Интересно, если есть возможность, чтобы выбрать несколько значений и передать их функции от один Validation установлен как так

JustAnExample -Fields IPAddress Cluster 

Может быть, есть библиотека для этого или, может быть, я просто что-то пропустил, но я действительно могу» t найти решение для этого.

ответ

2

Если вы хотите передать несколько аргументов строку с параметром -Fields, изменить его тип массива ([String[]]):

param(
    [Parameter(Mandatory=$false)] 
    [ValidateSet("IPAddress","Timezone","Cluster")] 
    [String[]]$Fields 
) 

И отделить аргументы , вместо пространства:

JustAnExample -Fields IPAddress,Cluster 
+0

OMG человек большое спасибо! Вы спасли меня много времени – SokIsKedu

+0

У меня есть еще один вопрос. Есть ли способ сделать эти выборы уникальными? потому что, когда я запускаю программу, я могу выбрать 2 или более одинаковых значения. Поэтому я хочу, чтобы пользователь мог выбрать только одно значение из данного списка. Я читал https://social.technet.microsoft.com/wiki/contents/articles/15994.powershell-advanced-function-parameter-attributes.aspx#ValidateSet , но не мог найти ничего общего с этой проблемой – SokIsKedu