Я разработал собственный командлет С#. Он имеет три параметра (все они строковые), и ни один из них не является обязательным. Два из них относятся к набору параметров1, а третий — к набору параметров2. Он работает нормально, когда пользователь задает параметры из обоих наборов параметров, он выдает сообщение о том, что они не принадлежат одному и тому же набору параметров. Но у меня две проблемы:
- Когда пользователь не указывает какой-либо параметр (поскольку ни один из них не является обязательным), он выдает ошибку. Набор параметров не может быть разрешен с использованием указанного именованного параметра.
- Когда пользователь задает первый параметр и тип, а затем при нажатии на вкладку должен отображаться только второй параметр, потому что первый и второй находятся в одном и том же наборе параметров, но отображаются 2-й и 3-й, что неверно. Точно так же он показывает 1-й и 2-й, даже если пользователь сначала вводит 3-й параметр.
Вот код, как я определил параметры:
[System.Management.Automation.Cmdlet(System.Management.Automation.VerbsCommon.Get, "Customcmd")]
public class Get_Customcmd: System.Management.Automation.PSCmdlet
{
[System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set1")]
public string Param1;
[System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set1")]
public string Param2;
[System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set2")]
public string Param2;
protected override void ProcessRecord()
{
Может ли кто-нибудь сказать мне, я что-то пропустил? Должны ли добавляться дополнительные атрибуты к параметрам?