2

Я разработал функцию, которая имеет 2 набора параметров, оба из которых содержат обязательные параметры. Я хотел бы спроектировать функцию так, чтобы наборы можно было использовать отдельно или вместе. Вот что я собрал:

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

Единственная проблема, с которой я сталкиваюсь, заключается в том, что, например, если я сам -CopyPermissions в командной строке, я получу неоднозначное сообщение с набором параметров вместо того, чтобы запрашивать значение для FromUser .

Я понимаю, почему это происходит, однако, если возможно, я хотел бы выдать ошибку, которая является более описательной, что-то вроде FromUser must be specified whenever CopyPermissions is set . Есть ли способ, которым я могу это сделать?

0