I needed to define a PowerShell cmdlet function that optionally accepted different typed parameters; Parameter Sets seemed to be the ideal thing for this, but I struggled to find anything describing how to deal with no parameters. I ended up with the following; function global : Get - SPQuotaTemplate { [ CmdletBinding ( DefaultParameterSetName = "none" )] param ( [ Parameter ( ParameterSetName = "name" , Position = 0 , ValueFromPipeline = $true )] [ string ] $name , [ Parameter