Powershell:处理多个参数集

Powershell:处理多个参数集

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

相关内容