简体   繁体   English

参数集-确保参数存在

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

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