Powershell 参数validateset通配符
是否可以使用通配符使Parameter validateset工作 我想在Powershell 参数validateset通配符,powershell,Powershell,是否可以使用通配符使Parameter validateset工作 我想在*位置上接受0-100 param ( [Parameter(Mandatory=$True)] [validateset("6.1.*.*")] [string]$variable ) 错误消息: 无法验证参数“variable”上的参数。参数“6.1.1.0”不属于ValidateSet属性指定的集合“6.1..”。请提供集合中的参数,然后重试该命令。 +CategoryInfo:In
*
位置上接受0-100
param
(
[Parameter(Mandatory=$True)]
[validateset("6.1.*.*")]
[string]$variable
)
错误消息:
无法验证参数“variable”上的参数。参数“6.1.1.0”不属于ValidateSet属性指定的集合“6.1..”。请提供集合中的参数,然后重试该命令。
+CategoryInfo:InvalidData:(:)[],ParentContainerRorRecordException
+FullyQualifiedErrorId:参数ArgumentValidationError
不,这就是
[ValidatePattern()]
的作用:
param(
[Parameter(Mandatory=$True)]
[ValidatePattern('6\.1\.\d{1,3}\.\d{1,3}')]
[string]$variable
)
它采用正则表达式作为参数
[ValidateSet()]
用于存在一组小的常量值的情况。PowerShell还为这些功能提供自动完成功能。例如:
[ValidateSet('Windows', 'Mac', 'Linux')
$OperatingSystem
有关更多参数验证属性,请参阅。由于看起来您要验证一个版本,您可能需要声明类型为
[version]
的参数,并使用ValidateScript
属性验证值,而不是使用字符串匹配:
function Test-Version {
param(
[ValidateScript({
$_.Major -eq '6' -and
$_.Minor -eq '1' -and
$_.Build -in (0..100) -and
$_.Revision -in (0..100) -or
$(throw 'Wrong Version')
})]
[version]$Version
)
}
这正是我需要的!