J'ai une fonction qui a 2 jeux de paramètres, qui contiennent tous deux des paramètres obligatoires. Je voudrais concevoir la fonction de sorte que les ensembles puissent être utilisés seuls ou ensemble. Voici ce que j'ai mis en place:
function Do-This {
[CmdletBinding(DefaultParameterSetName='NoTransferOrCopy')]
Param(
[Parameter(ParameterSetName='CopyPermissions')]
[Parameter(ParameterSetName='CopyAndTransfer')]
[switch]$CopyPermissions,
[Parameter(ParameterSetName='CopyPermissions', Mandatory=$True)]
[Parameter(ParameterSetName='CopyAndTransfer', Mandatory=$True)]
[string]$FromUser,
[Parameter(ParameterSetName='CopyPermissions')]
[Parameter(ParameterSetName='CopyAndTransfer')]
[switch]$CopyAll,
[Parameter(ParameterSetName='TransferMDrive')]
[Parameter(ParameterSetName='CopyAndTransfer')]
[switch]$TransferMDrive,
[Parameter(ParameterSetName='TransferMDrive', Mandatory=$True)]
[Parameter(ParameterSetName='CopyAndTransfer', Mandatory=$True)]
[string]$OldServer,
[Parameter(ParameterSetName='TransferMDrive', Mandatory=$True)]
[Parameter(ParameterSetName='CopyAndTransfer', Mandatory=$True)]
[string]$NewServer
)
}
Le seul problème que j'ai est que, par exemple, si je spécifie -CopyPermissions
lui-même sur la ligne de commande, je reçois un message de jeu de paramètres ambigu au lieu d’être invité à saisir une valeur pour FromUser
.
Je comprends pourquoi cela se produit, cependant, si possible, j’aimerais lancer une erreur plus descriptive, comme FromUser must be specified whenever CopyPermissions is set
. Est-ce que je peux faire ça?
powershell
RyanL
la source
la source
Jetez un oeil à cette question: Utilisation de jeux de paramètres avancés dans une fonction avec plusieurs commutateurs uniques
beatcracker