我正在尝试验证一个名为";收集";只接受3个参数(基本、中等和完全(;有效的";值为"0";收集";参数,它得到一个";false";回来
我就是这么做的:
[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
}
运行测试:
c: \script.ps1-收集基本
'collect' is mandatory with mandatory values. For reference, use -help argument
PD:-我知道我可以使用validateset,但这对我不起作用。-我认为问题出在嵌套的$collect-ne("基本"或"中等"或"完全"(中,但我该如何解决它?
-or
操作总是计算为[bool]
,因此您的if
条件基本上是$collect -ne $true
。
您将希望使用-notin
而不是-ne
:
if($collect -notin 'basic','medium','full'){
# ...
}
或者更好的是,只需使用ValidateSet
属性:
param(
[ValidateSet('basic','medium','full')]
[string]$Collect
)