Last active
May 12, 2020 15:40
-
-
Save alx9r/b2dc04f178b4bd1aaafe784a37c45502 to your computer and use it in GitHub Desktop.
Test "no mandatory" parameter binding complex case (PowerShell/PowerShell#11143)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function Where-Object2 { | |
| [CmdletBinding(DefaultParameterSetName='None')] | |
| param( | |
| [Parameter(ValueFromPipeline=$true)] | |
| [psobject] | |
| ${InputObject}, | |
| [Parameter(ParameterSetName='ScriptBlockSet', Mandatory=$true, Position=0)] | |
| [scriptblock] | |
| ${FilterScript}, | |
| [Parameter(ParameterSetName='MatchSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='NotEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='GreaterThanSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterThanSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='LessThanSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveLessThanSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='GreaterOrEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterOrEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='LessOrEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveLessOrEqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='LikeSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveLikeSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='NotLikeSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotLikeSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='EqualSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveMatchSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='NotMatchSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotMatchSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='ContainsSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveContainsSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='NotContainsSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotContainsSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='InSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveInSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='NotInSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotInSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='IsSet', Mandatory=$true, Position=0)] | |
| [Parameter(ParameterSetName='IsNotSet', Mandatory=$true, Position=0)] | |
| #[Parameter(ParameterSetName='Not', Mandatory=$true, Position=0)] | |
| [ValidateNotNullOrEmpty()] | |
| [string] | |
| ${Property}, | |
| [Parameter(ParameterSetName='GreaterOrEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='NotEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='GreaterThanSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterThanSet', Position=1)] | |
| [Parameter(ParameterSetName='LessThanSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveLessThanSet', Position=1)] | |
| [Parameter(ParameterSetName='EqualSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterOrEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='LessOrEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveLessOrEqualSet', Position=1)] | |
| [Parameter(ParameterSetName='LikeSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveLikeSet', Position=1)] | |
| [Parameter(ParameterSetName='NotLikeSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotLikeSet', Position=1)] | |
| [Parameter(ParameterSetName='MatchSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveMatchSet', Position=1)] | |
| [Parameter(ParameterSetName='NotMatchSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotMatchSet', Position=1)] | |
| [Parameter(ParameterSetName='ContainsSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveContainsSet', Position=1)] | |
| [Parameter(ParameterSetName='NotContainsSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotContainsSet', Position=1)] | |
| [Parameter(ParameterSetName='InSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveInSet', Position=1)] | |
| [Parameter(ParameterSetName='NotInSet', Position=1)] | |
| [Parameter(ParameterSetName='CaseSensitiveNotInSet', Position=1)] | |
| [Parameter(ParameterSetName='IsSet', Position=1)] | |
| [Parameter(ParameterSetName='IsNotSet', Position=1)] | |
| [System.Object] | |
| ${Value}, | |
| [Parameter(ParameterSetName='EqualSet')] | |
| [Alias('IEQ')] | |
| [switch] | |
| ${EQ}, | |
| [Parameter(ParameterSetName='CaseSensitiveEqualSet', Mandatory=$true)] | |
| [switch] | |
| ${CEQ}, | |
| [Parameter(ParameterSetName='NotEqualSet', Mandatory=$true)] | |
| [Alias('INE')] | |
| [switch] | |
| ${NE}, | |
| [Parameter(ParameterSetName='CaseSensitiveNotEqualSet', Mandatory=$true)] | |
| [switch] | |
| ${CNE}, | |
| [Parameter(ParameterSetName='GreaterThanSet', Mandatory=$true)] | |
| [Alias('IGT')] | |
| [switch] | |
| ${GT}, | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterThanSet', Mandatory=$true)] | |
| [switch] | |
| ${CGT}, | |
| [Parameter(ParameterSetName='LessThanSet', Mandatory=$true)] | |
| [Alias('ILT')] | |
| [switch] | |
| ${LT}, | |
| [Parameter(ParameterSetName='CaseSensitiveLessThanSet', Mandatory=$true)] | |
| [switch] | |
| ${CLT}, | |
| [Parameter(ParameterSetName='GreaterOrEqualSet', Mandatory=$true)] | |
| [Alias('IGE')] | |
| [switch] | |
| ${GE}, | |
| [Parameter(ParameterSetName='CaseSensitiveGreaterOrEqualSet', Mandatory=$true)] | |
| [switch] | |
| ${CGE}, | |
| [Parameter(ParameterSetName='LessOrEqualSet', Mandatory=$true)] | |
| [Alias('ILE')] | |
| [switch] | |
| ${LE}, | |
| [Parameter(ParameterSetName='CaseSensitiveLessOrEqualSet', Mandatory=$true)] | |
| [switch] | |
| ${CLE}, | |
| [Parameter(ParameterSetName='LikeSet', Mandatory=$true)] | |
| [Alias('ILike')] | |
| [switch] | |
| ${Like}, | |
| [Parameter(ParameterSetName='CaseSensitiveLikeSet', Mandatory=$true)] | |
| [switch] | |
| ${CLike}, | |
| [Parameter(ParameterSetName='NotLikeSet', Mandatory=$true)] | |
| [Alias('INotLike')] | |
| [switch] | |
| ${NotLike}, | |
| [Parameter(ParameterSetName='CaseSensitiveNotLikeSet', Mandatory=$true)] | |
| [switch] | |
| ${CNotLike}, | |
| [Parameter(ParameterSetName='MatchSet', Mandatory=$true)] | |
| [Alias('IMatch')] | |
| [switch] | |
| ${Match}, | |
| [Parameter(ParameterSetName='CaseSensitiveMatchSet', Mandatory=$true)] | |
| [switch] | |
| ${CMatch}, | |
| [Parameter(ParameterSetName='NotMatchSet', Mandatory=$true)] | |
| [Alias('INotMatch')] | |
| [switch] | |
| ${NotMatch}, | |
| [Parameter(ParameterSetName='CaseSensitiveNotMatchSet', Mandatory=$true)] | |
| [switch] | |
| ${CNotMatch}, | |
| [Parameter(ParameterSetName='ContainsSet', Mandatory=$true)] | |
| [Alias('IContains')] | |
| [switch] | |
| ${Contains}, | |
| [Parameter(ParameterSetName='CaseSensitiveContainsSet', Mandatory=$true)] | |
| [switch] | |
| ${CContains}, | |
| [Parameter(ParameterSetName='NotContainsSet', Mandatory=$true)] | |
| [Alias('INotContains')] | |
| [switch] | |
| ${NotContains}, | |
| [Parameter(ParameterSetName='CaseSensitiveNotContainsSet', Mandatory=$true)] | |
| [switch] | |
| ${CNotContains}, | |
| [Parameter(ParameterSetName='InSet', Mandatory=$true)] | |
| [Alias('IIn')] | |
| [switch] | |
| ${In}, | |
| [Parameter(ParameterSetName='CaseSensitiveInSet', Mandatory=$true)] | |
| [switch] | |
| ${CIn}, | |
| [Parameter(ParameterSetName='NotInSet', Mandatory=$true)] | |
| [Alias('INotIn')] | |
| [switch] | |
| ${NotIn}, | |
| [Parameter(ParameterSetName='CaseSensitiveNotInSet', Mandatory=$true)] | |
| [switch] | |
| ${CNotIn}, | |
| [Parameter(ParameterSetName='IsSet', Mandatory=$true)] | |
| [switch] | |
| ${Is}, | |
| [Parameter(ParameterSetName='IsNotSet', Mandatory=$true)] | |
| [switch] | |
| ${IsNot})#, | |
| #[Parameter(ParameterSetName='Not', Mandatory=$true)] | |
| #[switch] | |
| #${Not}) | |
| process { $PSCmdlet.ParameterSetName } | |
| } | |
| '===Note===' | |
| 'Uncomment the Not switch and parameter set attributes to see the failure.' | |
| '','-gt' | |
| Where-Object2 -gt 1 # GreaterThanSet | |
| '','no arguments' | |
| Where-Object2 # Prompt : Supply values for "Property" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment