Использование расширенных функций является одним из распространенных способов достижения этого, и если вы хотите, чтобы динамическое 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 + Пробел, вы получите отфильтрованный список - довольно круто, верно?
Дайте ему попытку