Я пишу функцию, в которой я планирую обеспечить автозаполнение динамических параметров. Идея в этом;
Когда я печатаю
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
}
Спасибо!