如何将SwitchParameter添加到属性集合?

时间:2015-06-13 20:58:13

标签: powershell parameters

我有一个如下定义的属性集合:

$AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]

虽然我可以添加属性和validateset选项,但是我无法在集合中添加SwitchParameter。

$SwitchParameter = New-Object System.Management.Automation.SwitchParameter 
$AttributeCollection.Add($SwitchParameter)

当我运行上述内容时,我收到以下错误:

  

找不到“添加”的重载和参数计数:“1”。

由于属性集合采用类型System.Attribute的参数,我想必须有一种不同的方式来添加SwitchParameter,但我不确定如何。

1 个答案:

答案 0 :(得分:0)

您不必使用任何其他属性来使参数成为切换参数。您只需将其声明为System.Management.Automation.SwitchParameterswitch

function f{
    [CmdletBinding()]
    param(
        [string[]]$Names
    )
    dynamicparam{
        $DynamicParams=New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
        foreach($Name in $Names){
            $Attributes=@(
                New-Object Parameter -Property @{ParameterSetName="Set_$Name"}
            )
            $Param=New-Object System.Management.Automation.RuntimeDefinedParameter $Name,switch,$Attributes
            $DynamicParams.Add($Name,$Param)
        }
        $DynamicParams
    }
}