Example
function myFunction { param( # If parameter 'a' is used, then 'c' is mandatory # If parameter 'b' is used, then 'c' is optional, but allowed # You can use parameter 'c' in combination with either 'a' or 'b' # 'a' and 'b' cannot be used together [parameter(ParameterSetName="AandC", mandatory=$true)] [switch]$a, [parameter(ParameterSetName="BandC", mandatory=$true)] [switch]$b, [parameter(ParameterSetName="AandC", mandatory=$true)] [parameter(ParameterSetName="BandC", mandatory=$false)] [switch]$c ) # $PSCmdlet.ParameterSetName can be used to check which parameter set was used Write-Host $PSCmdlet.ParameterSetName } # Valid syntaxes myFunction -a -c # => "Parameter set : AandC" myFunction -b -c # => "Parameter set : BandC" myFunction -b # => "Parameter set : BandC" # Invalid syntaxes myFunction -a -b # => "Parameter set cannot be resolved using the specified named parameters." myFunction -a # => "Supply values for the following parameters: # c:"