Questão Powershell: Lidando com vários conjuntos de parâmetros


Eu tenho uma função trabalhada que tem dois conjuntos de parâmetros, os quais contêm parâmetros obrigatórios. Eu gostaria de projetar a função para que os conjuntos possam ser usados ​​individualmente ou juntos. Isto é o que eu juntei:

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
    )
}

O único problema que tenho é que, por exemplo, se eu especificar -CopyPermissionspor si só na linha de comando, eu recebo uma mensagem de conjunto de parâmetros ambíguos em vez de ser solicitado por um valor para FromUser.

Eu entendo porque isso está acontecendo, no entanto, se possível, eu gostaria de lançar um erro que é mais descritivo, algo como FromUser must be specified whenever CopyPermissions is set. Existe alguma maneira de fazer isso?


2


origem


Dê uma olhada nesta questão: Usando conjuntos de parâmetros avançados em uma função com vários switches exclusivos - beatcracker


Respostas: