[英]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.