繁体   English   中英

Powershell参数,根据正则表达式进行验证并传递布尔值

[英]Powershell Parameter, Validate it according to Regex and Pass a Boolean value

这是场景-我正在编写脚本。 我需要通过“是/否”或“是/否”回答问题。 我需要对其进行验证(因此,除了yes或ay响应以外的任何其他方法都会引发错误),然后理想情况下,我希望将值转换为布尔值$ true表示Yes / Y响应或$ false表示否/ n响应

这是我到目前为止的内容-可以说,这是行不通的。 我在添加参数和为其添加验证方面有点陌生-因此,我希望获得一些帮助和指导。

[parameter(mandatory=$true,
HelpMessage = "Is this Server Managed Server? Y/N?"
)]
[Validatescript({
if ($_ -match '^y(es)?$'){
    $true
    }

 else { ($_ -match '^n(o)?$')
    $False
    }

[string]$Managed = "Managed Server Y/N"
}
)

如果您认为这是错误的, validatescript应该返回$true才能使其正常工作,最好将其作为实际代码的一部分来实现,或者只是实现一个开关:

[switch]$Managed

编辑:因此validatescript如果不返回$true则将引发错误,您不能使用它为参数分配true或false(或其他任何值),它仅验证参数。

我认为您正在寻找的是“ ValidateSet”,因此您的脚本仅接受您定义的某些参数的预定值。 这是在函数中使用“ ValidateSet”的示例:

Function Test-Validation{
    param(
    [Parameter(Mandatory=$true,HelpMessage="Is this Server Managed Server? Y/N?")]
    [ValidateSet("Yes","y","No","n")]
    $var1
    )
    IF($var1 -match '[Yes|Y]'){
        return $true
    } Else {
        Return $false
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM