Есть ли способ показать «меню выбора консоли» для пользовательского ввода в моем скрипте, как Ctrl + пробел в PSReadLine - PullRequest
1 голос
/ 18 февраля 2020

PSReadLine имеет FANTASTI C функциональность для его Ctrl + Пробел привязка клавиш.

enter image description here

Есть ли способ, с помощью которого я могу использовать ту же функциональность "консольного меню", чтобы позволить моим пользователям сценария (обычно мне) выбирать из списка возможных значений? Я не хочу иметь отдельный вид сетки (Out-GridView), чтобы сделать выбор.

1 Ответ

1 голос
/ 18 февраля 2020

Использование расширенных функций является одним из распространенных способов достижения этого, и если вы хотите, чтобы динамическое c завершение пути (согласно вашему комментарию), то эту возможность можно добавить с помощью Register-ArgumentCompleter

$scriptBlock = {
    param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)

    Get-ChildItem -Path $pwd -Directory | Where-Object {
        $_ -like "*$wordToComplete*"
    } | ForEach-Object {
        "'$_'"
    }
}
#Register the above scriptblock to the foo function Path Parameter
Register-ArgumentCompleter -CommandName foo -ParameterName Path -ScriptBlock $scriptBlock

function foo { 
    param( 
        [ValidateSet("Tom","Dick","Jane")] 
        $Name,
        [ValidateRange(21, 65)] 
        $Age,
        [string] 
        $Path 
    ) 
    Write-Host ($Name + $Age + $Path)
}

Дополнительную информацию можно найти с помощью Get-Help about_Functions_Advanced

Вышеприведенное также работает с частичными именами каталогов, например, если вы знаете, что в каталоге есть «test» в типе имени foo -path test и нажмите CTRL + Пробел, вы получите отфильтрованный список - довольно круто, верно?

Дайте ему попытку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...