(auf PS v5 getestet)
es, dass Parameter erscheint Sätze funktionieren nur, wenn mindestens zwei definiert sind - jedoch eher als eine Ausnahme Anhebung der Benutzer Sie werden aufgefordert, die fehlenden Werte anzugeben (wegen Mandatory=$True
), die möglicherweise nicht Ihren Wünschen entsprechen.
Wenn die Param
Definition geändert wird:
Param(
[Parameter(ParameterSetName='Test1', Mandatory=$True)]
[Switch]$installDatabase,
[Parameter(ParameterSetName='Test1', Mandatory=$True)]
[String]$databasePassword,
[Parameter(ParameterSetName='Test2')]
[String]$something
)
Der Benutzer wird installDatabase
oder databasePassword
gefragt werden, ob nur einer von ihnen geliefert wird, und nicht gefragt werden, ob something
geliefert wird.
Eine Ausnahme wird ausgelöst, wenn something
und (installDatabase
oder databasePassword
) geliefert werden.
Wenn nur ein Parametersatz definiert ist, ist es so, als ob keiner ist.
EDIT
Der Versuch, einen Standardwert von ($throw...)
für die optionalen Parameter zu verwenden, wie zB:
[Parameter(ParameterSetName='Test1')]
[Switch]$installDatabase=$(throw "installDatabase is mandatory if databasePassword is provided"),
funktioniert nicht, da der Standardwert, ob der Parametersatz verwendet wird, anwendbar.
Das Problem ist, dass die if-Anweisung außerhalb des Parameterblocks liegt. Ich brauche eine Lösung, bei der eine Ausnahme ausgelöst wird, wenn die Parameter nicht zusammen übergeben werden. Parametersätze bieten dies möglicherweise nicht. – Jelphy
OK, es war nicht klar aus der Frage, hier ist ein Update –