参数集 - 确保参数存在
Parameter sets - ensure parameters exist
我正在尝试使用参数集来复制此功能:
if (($hostName) -or ($databaseName) -and (!$databasePassword)) {
throw "If hostName or databaseName specified, you must use databasePassword parameter."
}
我目前所拥有的简单示例:
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$hostName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databaseName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databasePassword
这是行不通的。例如,我可以在没有 $databasePassword
的情况下提供 $hostName
,或者在没有 $databasePassword
的情况下提供 $dataBasename
并且函数运行。
我错过了什么?
设置databasePassword
为必填项?
[Parameter(Mandatory=$true, ParameterSetName="Test")]
[string]$databasePassword
制作两个参数集,第一个$Hostname
是强制的,第一个$DatabaseName
是可选的,另一个是强制的,$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
)
我正在尝试使用参数集来复制此功能:
if (($hostName) -or ($databaseName) -and (!$databasePassword)) {
throw "If hostName or databaseName specified, you must use databasePassword parameter."
}
我目前所拥有的简单示例:
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$hostName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databaseName,
[Parameter(Mandatory=$false, ParameterSetName="Test")]
[string]$databasePassword
这是行不通的。例如,我可以在没有 $databasePassword
的情况下提供 $hostName
,或者在没有 $databasePassword
的情况下提供 $dataBasename
并且函数运行。
我错过了什么?
设置databasePassword
为必填项?
[Parameter(Mandatory=$true, ParameterSetName="Test")]
[string]$databasePassword
制作两个参数集,第一个$Hostname
是强制的,第一个$DatabaseName
是可选的,另一个是强制的,$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
)