Получение выбранного значения параметра для предоставления значений для следующего параметра в Powershell - PullRequest
1 голос
/ 26 марта 2019

Я пишу функцию, в которой я планирую обеспечить автозаполнение динамических параметров. Идея в этом;

Когда я печатаю

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
}

Спасибо!

...