Командлет Register-ArgumentCompleter
регистрирует завершитель пользовательского аргумента. Завершение аргумента позволяет вам обеспечить динамическое завершение табуляции во время выполнения для любой указанной вами команды.
Вот пример функции, адаптированный к вашему вопросу (предполагает C:\servernames.txt
)
$scriptBlock = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
Get-Content C:\servernames.txt | Where-Object {
$_ -like "*$wordToComplete*"
} | ForEach-Object {
"'$_'"
}
}
#Register the above scriptblock to the Test-DynamicArguments function ComputerName Parameter
Register-ArgumentCompleter -CommandName Test-DynamicArguments -ParameterName ComputerName -ScriptBlock $scriptBlock
function Test-DynamicArguments {
[CmdletBinding()]
param
(
$ComputerName
)
"You Selected $ComputerName"
}
Теперь попробуйте Test-DynamicArguments
с -ComputerName
и частью имени сервера, вы можете завершить вкладку для выбора параметров цикла, а также Ctrl-Space
, чтобы показать все.
Прочтите справочную страницу Register-ArgumentCompleter
для получения дополнительной информации, надеюсь, это поможет