是否可以在Active Directory中检索具有完整属性的用户对象的RDN。
我已经对此进行了大量阅读,发现AD用户对象将RDN存储在名为“name”的属性中。据推测,name(rdn)属性的值应该类似于name =“cn = Smith,Joe”。 cn属性是应该返回的内容的一部分。但是,每当我检索对象的name属性时,“cn =”似乎总是丢失。例如
$foo = get-aduser -filter 'Name -like "Smith, Joe"'
$foo.name
将返回"Smith, Joe"
而不是"cn=Smith, Joe"
。有没有办法查询并获得完整的RDN返回?
答案 0 :(得分:1)
另一种方法是获取对象的完整DN,拆分DN,并显示结果数组中的第一个元素,即RDN,CN =或其他,依赖于对象
$((foo.distinguishedname).split(","))[0]
答案 1 :(得分:0)
不是答案,而是信息:
首先,RDN属性的attributeId由架构修复:
从RDN的角度来看,Active-Directory继承自X500标准。也就是说,您不选择要创建RDN的属性(在其他LDAP目录中)。在Active-Directory中,RDN属性由类rDNAttID在类模式中给出,它指定RDN属性的attributeId。如果查看类user
的架构,则为CN
。
所以你可以使用:
"CN=$((get-aduser 'Smith, Joe').Name)"
其次做以下实验:
在OU中创建一个名为“Mananegement”的用户,您有以下DN CN=MAnagement,OU=MyOU,...
现在尝试在同一个OU中创建一个名为“Mananegement”的OU,它应该创建一个具有以下DN OU=MAnagement,OU=MyOU,...
的对象,但是你收到一个错误。这个错误让我相信,某种程度上,Active-Directory将“Mananegement”视为RDN而不是像其他目录那样“CN = Mananegement”。
答案 2 :(得分:0)
$ current.Substring($ current.IndexOf('OU ='))