参数验证



我正在尝试验证一个名为";收集";只接受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
)

相关内容

  • 没有找到相关文章

最新更新