Автозаполнение пользовательского ввода PowerShell 2.0

У меня большой список данных (более 1000 различных значений), и я хочу, чтобы пользователь мог выбирать определенные значения из списка в консоли PowerShell.

Какой самый простой способ изнутри консоли позволить пользователю быстро выбирать значения?

Я хотел бы сделать что-то вроде завершения вкладки или возможность использовать клавиши со стрелками для прокрутки значений, но я не уверен, как сделать ни одну из этих вещей.

Любой совет будет принята с благодарностью.

Ответы на вопрос(2)

которые ищут способ сделать это и им посчастливилось использовать PS v3 (и мои извинения за все, что требуется, чтобы остаться с V2):

Самый простой способ добиться этого - использоватьValidateSet» опция в ваших входных параметрах.

function Show-Hello {
param (
    [ValidateSet("World", "Galaxy", "Universe")]
    [String]$noun
)
$greetingString = "Hello, " + $noun + "!"
Write-Host "`t=>`t" $greetingString "`t<="
 }

ValidateSet выдает ошибку, если пользователь пытается использовать любой другой ввод:

Show-Hello "Solar System"

   Show-Hello : Cannot validate argument on parameter 'noun'. The argument `
   "Solar System" does not belong to the set "World,Galaxy,Universe" specified `
   by the ValidateSet attribute. Supply an argument that is in the set and `
   then try the command again.

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

Решение Вопроса

параметров и значений параметров (в v3). Однако это свойство расширенных функций. Вы можете использоватьValidateSetAttribute сделать это.

Проверьте раздел справки Technet по расширенным функциям:http://technet.microsoft.com/en-us/library/hh847806.aspx

Вы можете заменить функции tabexpansion (v2) и tabexpansion2 (v3) в PowerShell для автоматического заполнения значений параметров вне расширенных функций. Вы можете получить базовое определение этого в PowerShell v3, запустив

 Get-Content function:TabExpansion2

Вот пример показа пользовательской функции расширения вкладки.

http://www.powershellmagazine.com/2012/11/29/using-custom-argument-completers-in-powershell-3-0/

Но, если вы хотите, чтобы пользователь мог автоматически заполнять значения дляRead-Host вид ввода, вам нужно написать прокси дляRead-Host чтобы достичь этого.

При желании вы можете посмотреть на модуль PowerTab наhttp://powertab.codeplex.com/

 esap12016 июн. 2013 г., 19:03
Спасибо за ответ! К сожалению, я ограничен использованием только v2, поэтому я рассмотрю функцию tabexpansion.
 ravikanth16 июн. 2013 г., 19:35
Вы также можете посмотреть на модуль PowerTab.powertab.codeplex.com

Ваш ответ на вопрос