如何确保函数只接受正整数?

时间:2016-05-12 13:51:14

标签: powershell int

我想对PowerShell中的用户输入进行一些基本验证,以确保用户只能输入整数,例如不输入-7。我不确定这是怎么做的,并且会欣赏指针。

[parameter(Mandatory=$false)][int]$number

如果用户输入-$number,则会被接受。我希望它拒绝这种类型的输入。

2 个答案:

答案 0 :(得分:14)

您可以使用ValidateRange作为参数:

[parameter(Mandatory=$false)]
[ValidateRange(1, [int]::MaxValue)]
[int] $number

来自documentation

  

ValidateRange验证属性

     

ValidateRange属性指定每个的数值范围           参数或变量值。 Windows PowerShell会生成错误           如果任何值超出该范围。在以下示例中,           Attempts参数的值必须介于0和10之间。

Param
(
    [parameter(Mandatory=$true)]
    [ValidateRange(0,10)]
    [Int]
    $Attempts
) 
     

在以下示例中,变量$ number的值必须为           在0到10之间。

[Int32][ValidateRange(0,10)]$number = 5

答案 1 :(得分:3)

自PowerShell 6.1.0起,您可以使用ValidateRangeKind初始化属性:

[Parameter(Mandatory = $false)]
[ValidateRange("Positive")]
[Int] $Number = 5

ValidateRange验证属性

ValidateRange属性为每个参数或变量值指定一个数字范围或ValidateRangeKind枚举值。如果任何值超出该范围,PowerShell都会生成错误。

ValidateRangeKind枚举允许以下值:

  • 正数-大于零的数字。
  • 负数-小于零的数字。
  • NonPositive-一个小于或等于零的数字。
  • NonNegative-一个大于或等于零的数字。