PowerShell跨AD域添加domain1用户到domain2安全组找不到对象报错问询
问题原因
Add-ADGroupMember : Cannot find an object with identity: 'testSecurityGroup' under: 'DC=domain1,DC=company,DC=com'.
出现该报错的核心原因是你脚本中-Server参数指定了domain1的域控制器,但是目标安全组testSecurityGroup属于domain2域,命令默认会在-Server参数指定的域下查找安全组,自然找不到不属于该域的组对象。
修复方案
跨域添加AD组成员的核心逻辑是:操作目标是domain2的安全组,所以-Server参数需要指向domain2的域控制器,同时确保传入的用户标识可以被domain2的域控制器识别为domain1的合法用户。
方案1:CSV中的userName字段已包含域标识(如domain1\用户名、用户名@domain1.company.com)
直接修改-Server参数为domain2的域控制器地址即可:
Import-Csv -Path "C:\Temp\test.csv" | ForEach-Object { Add-ADGroupMember -Server domain2.company.com -Identity "testSecurityGroup" -Members $_.'userName' }
方案2:CSV中的userName仅为纯用户名(无域前缀)
需要手动拼接domain1的域前缀,避免domain2的域控制器无法识别用户所属域:
Import-Csv -Path "C:\Temp\test.csv" | ForEach-Object { $domainUser = "domain1\$($_.userName)" Add-ADGroupMember -Server domain2.company.com -Identity "testSecurityGroup" -Members $domainUser }
注意事项
- 两个域必须提前配置好信任关系(至少domain2信任domain1),否则无法将外域用户添加到当前域的安全组中
- 运行脚本的账号需要同时具备domain2域中
testSecurityGroup的成员修改权限,以及domain1域用户的读取权限 - 如果仍然出现用户找不到的报错,可以将传入
-Members参数的用户标识替换为用户的完整可分辨名称(DN)或对象GUID,兼容性更高
内容的提问来源于stack exchange,提问作者Codr4Life
相关产品推荐
相关产品推荐

