【问题标题】:Multiple Mandatory Parameter Sets多个强制参数集
【发布时间】:2014-08-19 11:28:35
【问题描述】:

我正在处理一个包含多个参数集的函数,其中一些是强制性的,一些是可选的。

这只是一个例子,但想象一下以下情况:

从 AD 组中添加或删除用户或计算机的功能(出于某种原因,您需要区分用户和计算机)。

请记住这只是一个例子。在这种情况下,使用 ValidateSet() 添加/删除单个 [string] 参数会容易得多,但这不是重点。

所以你有 4 个参数集:

Param
(
    [Parameter(ParameterSetName = 'Add', Mandatory = $true)][switch] $Add,
    [Parameter(ParameterSetName = 'Remove', Mandatory = $true)][switch] $Remove,

    [Parameter(ParameterSetName = 'User', Mandatory = $true)][switch] $User,
    [Parameter(ParameterSetName = 'Computer', Mandatory = $true)][switch] $Computer
)

现在的问题是你只能使用四个参数之一,而不是(添加或删除)和(用户或计算机)

我知道每个参数可以使用多个参数集,但我看不到强制它具有两个始终强制的参数集的方法。实际上,您必须始终指定 Add 或 Remove 以及 User 或 Computer。

如何做到这一点?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您需要为这些不同的组合定义多个参数集。 试试这个:

    Function TestParamSet {
        [CmdletBinding()]
        Param
        (
            [Parameter(ParameterSetName = 'AddUser', Mandatory = $true)]
            [Parameter(ParameterSetName = 'AddComputer', Mandatory = $true)]
            [switch] $Add,
    
            [Parameter(ParameterSetName = 'RemoveUser', Mandatory = $true)]
            [Parameter(ParameterSetName = 'RemoveComputer', Mandatory = $true)]
            [switch] $Remove,
    
            [Parameter(ParameterSetName = 'AddUser', Mandatory = $true)]
            [Parameter(ParameterSetName = 'RemoveUser', Mandatory = $true)]
            [switch] $User,
    
            [Parameter(ParameterSetName = 'AddComputer', Mandatory = $true)]
            [Parameter(ParameterSetName = 'RemoveComputer', Mandatory = $true)]
            [switch] $Computer
        )
    
        Process {
            #Do Nothing
        }
    }
    

    而且,当您获得有关此功能的帮助时,您会看到以下内容:

    PS C:\> Get-Help TestParamSet 
    
    NAME
        TestParamSet
    
    SYNTAX
        TestParamSet -Add -Computer  [<CommonParameters>]
    
        TestParamSet -Add -User  [<CommonParameters>]
    
        TestParamSet -Remove -Computer  [<CommonParameters>]
    
        TestParamSet -Remove -User  [<CommonParameters>]
    
    
    ALIASES
        None
    
    
    REMARKS
        None
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多