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);
}
}
}
}