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

Active Directory PowerShell脚本添加用户时出现无效DN语法错误

解决AD用户添加到安全组的无效DN语法错误

问题根源

你推测的没错,问题出在用户DN中的逗号转义逻辑上。Get-ADUser返回的DistinguishedName里的反斜杠是PowerShell字符串的转义方式,但LDAP路径解析器不认可这种转义规则,导致识别DN时出现语法错误。

两种可行解决方案

方案1:给DN包裹双引号

修改Add方法的参数,用双引号包裹整个DN,让LDAP解析器正确识别特殊字符:

$tmp = Get-ADUser -Filter "SamAccountName -eq '$user'"
Write-Host "User DN name -> " $tmp.DistinguishedName
# 给DN添加双引号包裹,PowerShell用反引号转义双引号
$group.Add("LDAP://`"$($tmp.DistinguishedName)`"")
$group.CommitChanges()

方案2:用ObjectGUID构造LDAP路径(更推荐)

直接使用用户的ObjectGUID生成LDAP路径,完全避开DN特殊字符的转义问题,这种方式更稳定可靠:

$tmp = Get-ADUser -Filter "SamAccountName -eq '$user'"
Write-Host "User DN name -> " $tmp.DistinguishedName
# 用ObjectGUID构造LDAP路径
$userGuid = [GUID]$tmp.ObjectGUID
$group.Add("LDAP://<GUID=$userGuid>")
$group.CommitChanges()

补充说明

LDAP路径中,当DN包含逗号、等号、加号等特殊字符时,需要通过包裹双引号来明确这些字符属于DN的一部分,而非DN的分隔符。而使用ObjectGUID的方式则完全绕开了DN的字符串解析问题,是处理AD对象操作更稳妥的通用方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:39:59