My function has two groups of parameters (A, B), where only one parameter may be used within the group (A1 or A2, B1 or B2), both or only one group may be used. For demonstration I have the following code.
Function Test-1{
Param(
[Parameter(ParameterSetName="A1B1")]
[Parameter(ParameterSetName="A1B2")]
[switch]$A1,
[Parameter(ParameterSetName="A2B1")]
[Parameter(ParameterSetName="A2B2")]
[switch]$A2,
[Parameter(ParameterSetName="A1B1")]
[Parameter(ParameterSetName="A2B1")]
[switch]$B1,
[Parameter(ParameterSetName="A1B2")]
[Parameter(ParameterSetName="A2B2")]
[switch]$B2
)
Write-Output "OK"
}
Allowed:
Test-1 -A1
Test-1 -A2
Test-1 -B1
Test-1 -B2
Test-1 -A1 -B1
Test-1 -A1 -B2
Test-1 -A2 -B2
Test-1 -A2 -B1
Not allowed:
Test-1 -A1 -A2
Test-1 -B1 -B2
Test-1 -A1 -B1 -B2
Test-1 -A2 -B1 -B2
Test-1 -A1 -A2 -B1
Test-1 -A1 -A2 -B2
Test-1 -A1 -A2 -B1 -B2
This works:
Test-1 -A1 -B1
Test-1 -A1 -B2
Test-1 -A2 -B2
Test-1 -A2 -B1
This fails "parameter set cannot be resolved using the specified named parameters":
Test-1 -A1
Test-1 -A2
Test-1 -B1
Test-1 -B2
How can I achieve my goal?