[英]Parameter sets - ensure parameters exist
I'm trying to use Parameter Sets to replicate this functionality: 我正在尝试使用参数集来复制此功能:
if (($hostName) -or ($databaseName) -and (!$databasePassword)) {
throw "If hostName or databaseName specified, you must use databasePassword parameter."
}
Simple example of what I have so far: 到目前为止我所拥有的简单示例:
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$hostName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databaseName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databasePassword
This is not working. 这是行不通的。 I can supply
$hostName
without $databasePassword
for example, or $dataBasename
without $databasePassword
and the function runs. 例如,我可以提供不带
$databasePassword
$hostName
或不带$databasePassword
$dataBasename
,然后函数运行。
What am I missing? 我想念什么?
Set databasePassword
to be mandatory? 将
databasePassword
设置为强制性吗?
[Parameter(Mandatory=$true, ParameterSetName="Test")]
[string]$databasePassword
Make two parameter sets, make $Hostname
mandatory in the first, make $DatabaseName
optional in the first and mandatory in the other, make $DatabasePassword
mandatory in both. 创建两个参数集,在第一个中使
$Hostname
必需,在第一个中使$DatabaseName
可选,在另一个中使$DatabasePassword
必需,在这两者中使$DatabasePassword
必需。
[CmdletBinding(DefaultParameterSetName='host')]
Param(
[Parameter(ParameterSetName='host', Mandatory=$true)]
[string]$Hostname,
[Parameter(ParameterSetName='host', Mandatory=$false)]
[Parameter(ParameterSetName='dbname', Mandatory=$true)]
[string]$DatabaseName,
[Parameter(ParameterSetName='host', Mandatory=$true)]
[Parameter(ParameterSetName='dbname', Mandatory=$true)]
[string]$DatabasePassword
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.