如何解决参数验证
我正在尝试验证一个名为“Collect”的参数以仅接受 3 个参数(基本、中等和完整),但是当我为“collect”参数分配一个“有效”值时,它得到了一个“假”返回。
这就是我所做的:
[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: - 我知道我可以使用验证集,但这对我不起作用。 - 我认为问题出在嵌套的 $collect -ne ('basic' -or 'medium' -or 'full') 中,但我该如何解决?
解决方法
-or
操作 总是 评估为 [bool]
- 所以您的 if
条件基本上是 $collect -ne $true
。
您需要使用 -notin
而不是 -ne
:
if($collect -notin 'basic','medium','full'){
# ...
}
或者更好的是,只需使用 ValidateSet
属性:
param(
[ValidateSet('basic','full')]
[string]$Collect
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。