Powershell: gérer plusieurs jeux de paramètres

2

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?

RyanL
la source