Im trying to validate a parameter called "Collect" to accept only 3 parameters (basic, medium and full) but when i asign a "valid" value to the "collect" parameter, it got a "false" return.
Thats what i did:
[CmdLetBinding()]
param([string]$Collect)
)
if ($collect -ne ('basic' -or 'medium' -or 'full')) {
Write-Host "'collect' is mandatory with mandatory values. For reference, use -help argument" -ForegroundColor Red
exit
}
Running test:
c:\script.ps1 -collect basic
'collect' is mandatory with mandatory values. For reference, use -help argument
PD: -I know that i could use validateset, but this dont work for me. -I think the problem is in the nested $collect -ne ('basic' -or 'medium' -or 'full'), but how can i solve it?
An
-or
operation always evaluates to a[bool]
- so yourif
condition is basically$collect -ne $true
.You'll want to use
-notin
instead of-ne
:Or better yet, just use a
ValidateSet
attribute: