我设计了一个具有 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
。有什么办法吗?