簡體   English   中英

當null時,powershell強制性參數將引發錯誤

[英]powershell mandatory parameter throws error when null

我對強制變量保持為null的情況下的錯誤處理感到困惑。

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

在這種情況下,如果沒有為$ list傳遞任何參數,那么系統會提示我輸入它,但是如果我只是按Enter鍵(將null傳遞給$ 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

傳遞$null值時,滿足Mandatory要求。 如果您希望該命令在執行之前失敗,則應按照@JeffZeitlin的建議使用驗證。

聽起來您需要驗證的是該值不是$null也不是空數組。 您可以為此使用[ValidateNotNullOrEmpty()]

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM