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.