我有一个如下定义的属性集合:
$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,但我不确定如何。
答案 0 :(得分:0)
您不必使用任何其他属性来使参数成为切换参数。您只需将其声明为System.Management.Automation.SwitchParameter
或switch
。
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
}
}