Hi,
I am working on this function where I need to use parameter sets because I have 2 parameters that cannot be used together.
Var1 in set 1 and var2 in set2.
That works fine.
I also have var 3 which is a switch and when that switch is set var4 is mandatory.
Therefore I put var3 and var4 in their own ParameterSet set3
Furthermore there is a parameter var5.
When var5 is set var6 is mandatory
Therefore I put them in Set4
Var1 should be mandatory for all sets except Set2
Var2 should be mandatory for all sets except Set1
This is what I think should be the param block:
function Get-Something
{
[CmdletBinding(DefaultParameterSetName='Set1')]
Param
(
[Parameter(ParameterSetName='Set1',
Position = 0,
Mandatory=$True)]
[String]
$Var1,
[Parameter(ParameterSetName='Set2',
Position = 0,
Mandatory=$True)]
[String]
$Var2,
[Parameter(ParameterSetName='Set1', Mandatory = $False)]
[Parameter(ParameterSetName='Set2', Mandatory = $False)]
[Parameter(ParameterSetName='Set3',
Position = 1,
Mandatory=$False)]
[switch]
$Var3,
[Parameter(ParameterSetName='Set1', Mandatory = $False)]
[Parameter(ParameterSetName='Set2', Mandatory = $False)]
[Parameter(ParameterSetName='Set3',
Position = 2,
Mandatory=$True)]
[Array]
$Var4,
[Parameter(ParameterSetName='Set1', Mandatory = $False)]
[Parameter(ParameterSetName='Set2', Mandatory = $False)]
[Parameter(ParameterSetName='Set4',
Position = 3,
Mandatory=$False)]
$Var5,
[Parameter(ParameterSetName='Set1', Mandatory = $False)]
[Parameter(ParameterSetName='Set2', Mandatory = $False)]
[Parameter(ParameterSetName='Set4',
Position = 4,
Mandatory=$True)]
[String]
$Var6
)
}
This is what I get when I run this function:
SYNTAX
Get-Something [-Var1] [-Var3] [-Var4 ] [-Var5 ] [-Var6 ] []
Get-Something [-Var2] [-Var3] [-Var4 ] [-Var5 ] [-Var6 ] []
Get-Something [[-Var3]] [-Var4] []
Get-Something [[-Var5] ] [-Var6] []
Line 1 looks fine but when I set var3, the function never asks for var4 same counts for var5 and var6
Same counts for line 2
Line 3 should show var4 as mandatory which it is not
Line 4 should show var6 as mandatory which it is not.
Last, line 3 and 4 imply that it should be possible to run the command without var1 or var2 which can never be the case.
Can someone enlighten me?
Thank you in advance.