获取参数的选定值以为Powershell中的下一个参数提供值

时间:2019-03-26 15:57:37

标签: powershell parameters powershell-core validateset

我正在编写一个计划提供动态参数自动完成功能。想法是这个

当我键入

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
}

谢谢!

0 个答案:

没有答案