我正在编写一个计划提供动态参数自动完成功能。想法是这个
当我键入
Activate -User <USERNAME>
(-User
类由GetUsers
自动完成)
我想使用<USERNAME>
类的-User
方法中GetValidValues
参数选择的GetProfiles
,因此我可以动态确定应该在哪个用户目录中搜索概要文件,因为每个用户都有不同的配置文件路径。
我一直找不到能够获取任何参数的任何选定值的机制。我正在使用PS6,我想知道是否有办法做到这一点。这是我的最小代码。
class GetUsers : System.Management.Automation.IValidateSetValuesGenerator
{
[String[]] GetValidValues()
{
# I simply return the user array here, no big deal
return [string[]] $usersArray
}
}
class GetProfiles : System.Management.Automation.IValidateSetValuesGenerator
{
[String[]] GetValidValues()
{
# Here I need to get what value is selected for $User parameter
# of the function below, so I can populate $profileArray for selected
# user
return [string[]] $profileArray
}
}
function global:Activate()
{
[CmdletBinding()]
Param
(
[ValidateSet([GetUsers])]
[string]$User="",
[ValidateSet([GetProfiles])]
[string]$Profile="",
)
# do business as usual
Write-Host $User
Write-Host $Profile
}
谢谢!