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

Powershell 如何确保函数只接受正整数?,powershell,int,Powershell,Int,我想在PowerShell中对用户输入进行一些基本验证,以确保用户只能输入一个整数,而不能输入-7(例如)。我不知道这是如何做到的,希望能有一个指针 [parameter(Mandatory=$false)][int]$number 如果用户输入-$number,则接受此操作。我希望它拒绝这种类型的输入 您可以对参数使用ValidateRange: [parameter(Mandatory=$false)] [ValidateRange(1, [int]::MaxValue)] [int] $

我想在PowerShell中对用户输入进行一些基本验证,以确保用户只能输入一个整数,而不能输入-7(例如)。我不知道这是如何做到的,希望能有一个指针

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

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

您可以对参数使用
ValidateRange

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

ValidateRange验证属性

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

Param
(
    [parameter(Mandatory=$true)]
    [ValidateRange(0,10)]
    [Int]
    $Attempts
) 
[Int32][ValidateRange(0,10)]$number = 5
在下面的示例中,变量$number的值必须为 在0到10之间

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

由于PowerShell 6.1.0,您可以使用ValidateRangeKind初始化属性:

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

ValidateRange验证属性

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

ValidateRangeKind枚举允许以下值:

  • 正-大于零的数字
  • 负数-小于零的数字
  • 非正-小于或等于零的数字
  • 非负-大于或等于零的数字

根据这里显示的内容,这并不明显,但需要澄清的是,本例中使用[int]类型的ValidateRange(0,10)包含零和十个数字边界。因此,本例中给定的值为0或10应该是有效的,并且不会生成错误。