You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量添加AD组到组时触发ParameterBindingException问题求助

问题:添加多个AD组到指定组时触发ParameterBindingException异常

问题代码

$MissingGroup = 'GGroup01'

$getADGroupSplat = @{
    # find all groups where `$MissingGroup` is NOT a member of
    LDAPFilter = '(!memberof={0})' -f (Get-ADGroup $MissingGroup).DistinguishedName
    SearchBase = 'OU=xxxxxxxxxxx,DC=xxxxxxxxxxxxx,DC=xx'
}

$Group = Get-ADGroup @getADGroupSplat

$actualGroup = $Group | Where-Object {$_.Name -like "GGroup_A0*_Security"} | Format-List Name

Add-ADGroupMember -Identity $MissingGroup -Members $actualGroup

错误信息(翻译后)

Add-ADGroupMember:无法绑定参数“Members”。无法创建类型为“Microsoft.ActiveDirectory.Management.ADPrincipal”的对象,适配器无法设置Name属性的值。
在第1行第61字符:

  • ... -ADGroup -Identit $CitrixGG | Add-ADGroupMember -Members $actualGroup
  • ~~~~~~~~~~~~
    
    • CategoryInfo : InvalidArgument: (:) [Add-ADGroupMember], ParameterBindingException
    • FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

解决方法

错误原因

Format-List Name命令会把原始的AD组对象转换为格式化输出对象(类型为Microsoft.PowerShell.Commands.Internal.Format),而Add-ADGroupMember的-Members参数需要接收ADPrincipal类型对象(如AD组本身)或合法的标识符字符串(名称、DN、SID等),两者类型不匹配导致参数绑定失败。

修正代码

可选择以下两种方式之一:

方式1:保留原始AD组对象直接传递

去掉Format-List Name,直接传递筛选后的AD组对象:

$MissingGroup = 'GGroup01'

$getADGroupSplat = @{
    LDAPFilter = '(!memberof={0})' -f (Get-ADGroup $MissingGroup).DistinguishedName
    SearchBase = 'OU=xxxxxxxxxxx,DC=xxxxxxxxxxxxx,DC=xx'
}

$Group = Get-ADGroup @getADGroupSplat

$actualGroup = $Group | Where-Object {$_.Name -like "GGroup_A0*_Security"}

Add-ADGroupMember -Identity $MissingGroup -Members $actualGroup

方式2:提取组名称字符串传递

如果需要仅传递组名称,使用Select-Object -ExpandProperty Name提取纯名称字符串:

$MissingGroup = 'GGroup01'

$getADGroupSplat = @{
    LDAPFilter = '(!memberof={0})' -f (Get-ADGroup $MissingGroup).DistinguishedName
    SearchBase = 'OU=xxxxxxxxxxx,DC=xxxxxxxxxxxxx,DC=xx'
}

$Group = Get-ADGroup @getADGroupSplat

$actualGroup = $Group | Where-Object {$_.Name -like "GGroup_A0*_Security"} | Select-Object -ExpandProperty Name

Add-ADGroupMember -Identity $MissingGroup -Members $actualGroup

内容的提问来源于stack exchange,提问作者cosmo_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:55:30