PowerShell paramètre obligatoire dépendent d'autres paramètres

J'ai une PowerShell fonction qui modifie les valeurs de clé de registre. Code:

param(
      [Parameter()] [switch]$CreateNewChild,
      [Parameter(Mandatory=$true)] [string]$PropertyType
)

Il a un paramètre "CreateNewChild" et si le drapeau est réglé, la fonction va créer la clé de la propriété, même si elle wan pas trouvé. Le paramètre "PropertyType" doit être obligatoire, mais seulement si "CreateNewChild" indicateur a été défini.

La question est de savoir comment faire un paramètre obligatoire, mais seulement si un autre paramètre a été spécifié?

OK, j'ai été jouer avec elle. Et cela fonctionne:

param
([Parameter(ParameterSetName="one")]
 [switch]$DoNotCreateNewChild, [string]$KeyPath, [string]$Name, [string]$NewValue, [Parameter(ParameterSetName="two")]
 [switch]$CreateNewChild, [Parameter(ParameterSetName="two",Mandatory=$true)]
 [string]$PropertyType
)

Cependant, cela signifie que $chemin d'accès clé, $Nom et $NewValue ne sont pas obligatoires plus. Paramètre "un paramètre obligatoire rompt le code (jeu de paramètres ne peut pas être résolu d'erreur). Ces jeux de paramètres sont à confusion. Je suis sûr qu'il y est un moyen, mais je ne peux pas comprendre comment le faire

OriginalL'auteur lime | 2012-11-23