PowerShell 必需参数在 NULL 时引发错误



我对如何在强制变量保持空的情况下进行错误处理感到困惑。

function parse-com{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$True)]
        [string[]]$list
     )
...

在这种情况下,如果没有为$list传递参数,那么系统会提示我这样做,但是如果我只是按 Enter 键(将 null 传递给 $list(,那么我会抛出错误。我宁愿做的是抛出一个使用语句和/或优雅地退出。例。。。

PS C:Usersmemyself> 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

传递$null值时,满足Mandatory要求。如果您希望命令在执行之前失败,则应按照@JeffZeitlin的建议使用验证。

听起来您需要验证的是该值不是$null也不是空数组。为此,您可以用户[ValidateNotNullOrEmpty()]

function parse-com{
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory=$True)]
        [ValidateNotNullOrEmpty()]
        [string[]]$list
    )

最新更新