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

跨域添加AD组至用户的PowerShell脚本报错求助

跨域添加AD组成员的问题解决

问题根源

报错核心原因:组所在域(YYY域)无法解析另一域(XXX域)用户的可分辨名称,且原脚本错误地将AD对象转换为字符串传递,导致Add-ADGroupMember无法识别跨域用户身份。

前提条件

两个域之间必须已建立双向信任关系,这是跨域操作AD对象的基础。

修正后的脚本

方法一:直接传递AD用户对象(推荐)

$User = Get-ADUser -Identity "testuser1" -Server testserver1
$Group = Get-ADGroup -Identity "testgroup" -Server testserver2
$logfileTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

# 记录用户和组的完整DN到日志
Add-Content $logfile "$logfileTime :: The AD User : $($User.DistinguishedName)"
Add-Content $logfile "$logfileTime :: The group : $($Group.DistinguishedName)"

try {
    # 直接传递Get-ADUser返回的对象,PowerShell自动处理跨域身份识别
    Add-ADGroupMember -Identity $Group -Members $User -Server testserver2
}
catch {
    Add-Content $logfile "$logfileTime :: Add Member Error : $($_.Exception.Message)"
}

方法二:使用用户SID添加

$User = Get-ADUser -Identity "testuser1" -Server testserver1
$Group = Get-ADGroup -Identity "testgroup" -Server testserver2
$logfileTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

Add-Content $logfile "$logfileTime :: The AD User : $($User.DistinguishedName)"
Add-Content $logfile "$logfileTime :: The group : $($Group.DistinguishedName)"

try {
    # SID是全局唯一标识,跨域时可直接被目标域识别
    Add-ADGroupMember -Identity $Group -Members $User.SID -Server testserver2
}
catch {
    Add-Content $logfile "$logfileTime :: Add Member Error : $($_.Exception.Message)"
}

关键修正点

  • 避免对象转字符串:不要用双引号包裹$User/$Group,直接传递AD对象本身,PowerShell会自动提取其全局唯一标识(如SID)。
  • 明确指定目标服务器:Add-ADGroupMember必须通过-Server参数指定组所在域的服务器,确保操作目标正确。
  • 日志属性明确化:使用$($User.DistinguishedName)直接读取属性值,避免对象默认字符串输出的不确定性。

额外检查项

  • 执行脚本的账户需同时拥有:XXX域的用户读取权限、YYY域的组修改权限。
  • 确认域信任关系状态正常,无中断或配置错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:02:43