同一AD林中跨域添加用户到组失败:PowerShell执行报错求助
跨域添加AD用户到组的报错解决方法
问题原因
你用$ADUser.UserPrincipalName作为成员标识传递给Add-ADGroupMember时,连接到xx.test.com域的服务器无法在自身域范围内定位到yy.test.com域的用户对象,因此触发报错。
可行解决方案
方案1:使用用户的DistinguishedName(推荐)
AD用户的DistinguishedName是林内唯一标识,全局编录可直接解析跨域对象,读取用户后直接传递该属性即可:
$ADUser = Get-ADUser -Server "DC1.yy.test.com" -Filter "SamAccountName -eq '$UPN'" Add-ADGroupMember -Identity $GroupName -Members $ADUser.DistinguishedName -Server "DC2.xx.test.com:3269"
注:无需读取Properties *,DistinguishedName是Get-ADUser默认返回的属性,减少不必要的属性读取能提升效率
方案2:直接传递AD用户对象
如果你的PowerShell会话拥有跨域访问权限,可直接将获取到的$ADUser对象传入命令,无需提取单独属性:
$ADUser = Get-ADUser -Server "DC1.yy.test.com" -Filter "SamAccountName -eq '$UPN'" Add-ADGroupMember -Identity $GroupName -Members $ADUser -Server "DC2.xx.test.com:3269"
方案3:使用用户的SID
SID在AD林中全局唯一,同样可作为跨域对象的有效标识:
$ADUser = Get-ADUser -Server "DC1.yy.test.com" -Filter "SamAccountName -eq '$UPN'" Add-ADGroupMember -Identity $GroupName -Members $ADUser.SID -Server "DC2.xx.test.com:3269"
额外注意事项
- 执行命令的账号需同时拥有yy.test.com域的用户读取权限和xx.test.com域的组修改权限
- 确认DC2.xx.test.com已配置全局编录角色,且3269端口连接正常
- 避免滥用
Properties *,仅读取必要属性可优化命令执行速度
内容的提问来源于stack exchange,提问作者Konstantin Kostromin
相关产品推荐
相关产品推荐

