Я разработал функцию, которая имеет 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
. Есть ли способ, которым я могу это сделать?