簡體   English   中英

參數集-確保參數存在

[英]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必需,在這兩者中使$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