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

Powershell 如何将SwitchParameter添加到属性集合?,powershell,parameters,Powershell,Parameters,我有一个如下定义的属性集合: $AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute] 虽然我能够添加属性和validateset选项,但是我无法向集合添加SwitchParameter $SwitchParameter = New-Object System.Management.Automation.SwitchParameter $AttributeColl

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

$AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
虽然我能够添加属性和validateset选项,但是我无法向集合添加SwitchParameter

$SwitchParameter = New-Object System.Management.Automation.SwitchParameter 
$AttributeCollection.Add($SwitchParameter)
当我运行上述命令时,会出现以下错误:

找不到“Add”和参数计数“1”的重载


由于属性集合采用的参数类型为
System.attribute
,我想一定有不同的方法添加SwitchParameter,但我不确定如何添加。

您不必使用任何其他属性将参数设置为switch parameter。您只需将其类型声明为
System.Management.Automation.SwitchParameter
switch

函数f{
[CmdletBinding()]
param(
[string[]]$Names
)
动态存储器{
$DynamicParams=新对象System.Management.Automation.RuntimeDefinedParameterDictionary
foreach($Name中的名称){
$Attributes=@(
新对象参数-Property@{ParameterSetName=“Set_$Name”}
)
$Param=新对象System.Management.Automation.RuntimeDefinedParameter$Name,switch,$Attributes
$DynamicParams.Add($Name,$Param)
}
$DynamicParams
}
}

不必使用任何附加属性将参数设置为开关参数。您只需将其类型声明为
System.Management.Automation.SwitchParameter
switch

函数f{
[CmdletBinding()]
param(
[string[]]$Names
)
动态存储器{
$DynamicParams=新对象System.Management.Automation.RuntimeDefinedParameterDictionary
foreach($Name中的名称){
$Attributes=@(
新对象参数-Property@{ParameterSetName=“Set_$Name”}
)
$Param=新对象System.Management.Automation.RuntimeDefinedParameter$Name,switch,$Attributes
$DynamicParams.Add($Name,$Param)
}
$DynamicParams
}
}

为什么要将
SwitchParameter
添加到属性集合?您正在定义动态参数吗?在这种情况下,开关参数不需要任何特殊属性
SwitchParameter
是参数类型而不是属性。请点击“PeterAl”…我正在尝试添加一个动态参数:)。因此,如果我不必使用属性,那么如何使开关参数成为参数集的一部分。此外,我还假设我不必使用“runtimedefinedparameter”构造函数?为什么要将
SwitchParameter
添加到属性集合中?您正在定义动态参数吗?在这种情况下,开关参数不需要任何特殊属性
SwitchParameter
是参数类型而不是属性。请点击“PeterAl”…我正在尝试添加一个动态参数:)。因此,如果我不必使用属性,那么如何使开关参数成为参数集的一部分。此外,我还假设我不必使用“runtimedefinedparameter”构造函数?为什么要将
SwitchParameter
添加到属性集合中?您正在定义动态参数吗?在这种情况下,开关参数不需要任何特殊属性
SwitchParameter
是参数类型而不是属性。请点击“PeterAl”…我正在尝试添加一个动态参数:)。因此,如果我不必使用属性,那么我如何使开关参数成为参数集的一部分。此外,我认为我不必使用“runtimedefinedparameter构造函数”?啊,那么使用“switch”作为.NET类型。。。是的,现在为什么我没有想到:)…不管怎样,这是有效的,再次感谢“PetSerAI”啊,所以使用“switch”作为.NET类型。。。是的,现在为什么我没有想到:)…不管怎样,这是有效的,再次感谢“PetSerAI”啊,所以使用“switch”作为.NET类型。。。是的,现在为什么我没有想到:)…不管怎样,这很有效,再次感谢“佩瑟莱”