Добавление наборов параметров в мой пользовательский командлет C# без обязательных параметров

Я разработал собственный командлет С#. Он имеет три параметра (все они строковые), и ни один из них не является обязательным. Два из них относятся к набору параметров1, а третий — к набору параметров2. Он работает нормально, когда пользователь задает параметры из обоих наборов параметров, он выдает сообщение о том, что они не принадлежат одному и тому же набору параметров. Но у меня две проблемы:

  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()
        {

Может ли кто-нибудь сказать мне, я что-то пропустил? Должны ли добавляться дополнительные атрибуты к параметрам?


person Deepak    schedule 03.02.2012    source источник


Ответы (1)


  1. Поскольку вы используете только именованные параметры, вам нужно либо пометить один из них как "Набор параметров по умолчанию", например

    [Cmdlet(VerbsCommon.New, "Customcmd", DefaultParameterSetName = Set1)]

    , либо указать хотя бы один параметр, который не является частью какого-либо именованного набора параметров.

  2. PS не проверяет, принадлежат ли предложения вкладок к одному и тому же набору параметров или нет. Так что вы не делаете ничего плохого здесь, так ведет себя PS.

person digitguy    schedule 22.06.2012