Powershell 从Active Directory用户对象检索RDN
是否可以在属性完整的情况下检索Active Directory中用户对象的RDN 我对此做了大量阅读,发现AD用户对象将RDN存储在一个名为“name”的属性中。假设name(rdn)属性的值应该类似于name=“cn=Smith,Joe”。cn属性是应该返回的内容的一部分。但是,每当我检索对象的name属性时,“cn=”似乎总是丢失。比如说Powershell 从Active Directory用户对象检索RDN,powershell,active-directory,powershell-2.0,Powershell,Active Directory,Powershell 2.0,是否可以在属性完整的情况下检索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”
$foo = get-aduser -filter 'Name -like "Smith, Joe"'
$foo.name
将返回
“Smith,Joe”
而不是“cn=Smith,Joe”
。是否有办法查询并获取完整的RDN以返回?不是真正的答案,而是信息:
首先,RDN属性的attributeId由模式固定:
从RDN的角度来看,Active Directory继承自X500标准。也就是说,您不选择要创建RDN的属性(可以在其他LDAP目录中)。在Active Directory中,RDN属性在类架构中由给定,它指定RDN属性的attributeId。如果您查找类user
的模式,它就是CN
因此,您可以使用:
"CN=$((get-aduser 'Smith, Joe').Name)"
第二步做以下实验:
在OU中创建一个名为“ManAngement”的用户您有以下DN
CN=MAnagement,OU=MyOU,…
现在尝试在同一OU中创建一个名为“ManAngement”的OU。它应该创建一个具有以下DNOU=MAnagement,OU=MyOU,…
的对象,但您收到一个错误。这个错误使我相信,Active Directory将“MangeEngess”视为RDN,而不是像其他目录一样“Cn= MangeGeMeung. 另一种方法是获取对象的完整DN,拆分DN,并显示结果数组中的第一个元素,该元素将是RDN,CN=或其他依赖于对象的元素
$((foo.distinguishedname).split(","))[0]
$current.Substring($current.IndexOf('OU='))是否有任何原因“CN=${foo.name}”
不能满足您的需要?用户对象的RDN总是以CN=
开头。