我想对PowerShell中的用户输入进行一些基本验证,以确保用户只能输入整数,例如不输入-7。我不确定这是怎么做的,并且会欣赏指针。
[parameter(Mandatory=$false)][int]$number
如果用户输入-$number
,则会被接受。我希望它拒绝这种类型的输入。
答案 0 :(得分:14)
您可以使用ValidateRange
作为参数:
[parameter(Mandatory=$false)]
[ValidateRange(1, [int]::MaxValue)]
[int] $number
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-一个大于或等于零的数字。