Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 参数validateset通配符_Powershell - Fatal编程技术网

Powershell 参数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

是否可以使用通配符使Parameter validateset工作

我想在
*
位置上接受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
  )    
}

这正是我需要的!