Список значений параметров PowerShell

Я пытался найти ответ, но я думаю, что наличие слов PowerShell и параметра вместе в наборе ключевых слов не облегчает поиск

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

есть ли способ, которым я могу предоставить эти строки в скрипте, чтобы, если я наберу " myfunction-parameter .."Я могу использовать Tab completion для параметра ценность?

2 ответов


Если вы находитесь на PowerShell V2, вы можете использовать [ValidateSet()] атрибута, например:

param(
    [Parameter()]
    [ValidateSet('foo','bar','baz')]
    [string[]]
    $Item
)

см. раздел справки, выполнив:

man about_functions_advanced_parameters

можно использовать [ValidateSet()] Как показывает Кит, но это не очень хорошо работает с большим количеством возможных значений (заполнение списка при нажатии Tab становится очень медленным). Другой способ получения завершения вкладки-сделать пользовательское перечисление:

http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx

и приведите параметр как этот тип перечисления. Это накладывает некоторые ограничения на набор символов, который разрешен в вашем строки (в основном только буквы и цифры), но он будет заполнять список завершения вкладки намного быстрее, если это относительно большой список значений.