Quantcast
Viewing all articles
Browse latest Browse all 21975

Powershell Exception when using getDynamicParameters to return multiple object-types

HI Team

I wrote a cmdlet to accept 2 parameters A and B .  Each has 2 dependent parameters. 

Defined 2 classes to provide the definition of the dependent parameters.

Coded getDynamicParameters() to check for A and B and return instances of the respective classes.

When executed,  the optional parameters do get expanded but the cmdlet throws an error that the dependent parameters are missing.  Any clues ?

PS C:\Users\Administrator> test-Command -ParamB -GroupName1 g1 -Type1 t1 -ParamA -GroupName g -Type t
test-Command : A parameter cannot be found that matches parameter name 'GroupName1'.
At line:1 char:22
test-Command -ParamB -GroupName1 g1 -Type1 t1 -ParamA -GroupName g -Type t
                     ~~~~~~~~~~~
CategoryInfo          : InvalidArgument: (:) [test-Command], ParameterBindingException

Code as follows.

namespace testNMS

{
    [Cmdlet("test", "Command")]
    public class testCmdLet : Cmdlet, IDynamicParameters
    {

        public int count
        {
            get;
            set;
        }

        [Parameter]
        public SwitchParameter ParamA
        {
            get { return paramA; }
            set { paramA = value; }
        }
            private Boolean paramA;


            [Parameter]
            public SwitchParameter ParamB
            {
                get { return paramB; }
                set { paramB = value; }
            }
            private Boolean paramB;


        private DynamicParameters dynParameters;
        private DynamicParameters1 dynParameters1;
        public object GetDynamicParameters()
        {

            count++;   
            if (paramA)
            {
                dynParameters = new DynamicParameters();
                return dynParameters;
            }
            if (paramB)
            {
                dynParameters1 = new DynamicParameters1();
                return dynParameters1;

            }
            return null;
        }

        public class DynamicParameters {
            [Parameter]
            public string GroupName
            {
                get { return groupName; }
                set { groupName = value; }
            }
            private string groupName;

            [Parameter]
            public string Type
            {
                get { return type; }
                set { type = value; }
            }
            private string type;

        }


        public class DynamicParameters1
        {
            [Parameter]
            public string GroupName1
            {
                get { return groupName1; }
                set { groupName1 = value; }
            }
            private string groupName1;

            [Parameter]
            public string Type1
            {
                get { return type1; }
                set { type1 = value; }
            }
            private string type1;

        }

        protected override void ProcessRecord()
        {
            WriteObject("count  " + count);
            if (paramA)
            {
                WriteObject("nic1 + " + dynParameters.GroupName + " type " + dynParameters.Type + " ct " + count);

            }

            if (paramB)
            {
                WriteObject("nic2 + " + dynParameters1.GroupName1 + " type " + dynParameters1.Type1 + " ct " + count);

            }
        }
    }
}


Viewing all articles
Browse latest Browse all 21975

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>