Автоматический Полный Ввод Пользователя PowerShell 2.0

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

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

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

любой совет был бы очень признателен.

2 ответов


завершение вкладки PowerShell можно расширить до пользовательских параметров и значений параметров (в 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/


для людей, которые ищут способ сделать это и достаточно удачливы, чтобы использовать 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.

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