我对如何在强制变量保持为空的情况下进行错误处理感到困惑。
function parse-com{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$True)]
[string[]]$list
)
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果没有为 $list 传递参数,则会提示我输入它,但如果我只是按回车键(将空值传递给 $list),则会抛出错误。我宁愿做的是抛出一个使用声明和/或优雅地退出。例子...
PS C:\Users\memyself> parse-com
cmdlet parse-com at command pipeline position 1
Supply values for the following parameters:
list[0]:
parse-com : Cannot bind argument to parameter 'list' because it is an empty array.
At line:1 char:1
+ parse-com
+ ~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [parse-com], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyArrayNotAllowed,parse-com
Run Code Online (Sandbox Code Playgroud)
传递$null
值时,满足Mandatory
要求。如果您希望命令在执行之前失败,那么您应该按照@JeffZeitlin 的建议使用验证。
听起来您需要验证的是该值不是$null
也不是空数组。您可以使用[ValidateNotNullOrEmpty()]
function parse-com{
[CmdletBinding()]
Param (
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string[]]$list
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2232 次 |
最近记录: |