【问题标题】:Retrieving an RDN from an Active Directory User Object从 Active Directory 用户对象中检索 RDN
【发布时间】:2012-07-25 21:51:33
【问题描述】:

是否可以在 Active Directory 中检索用户对象的 RDN 而属性完整。

我对此进行了大量阅读,发现 AD 用户对象将 RDN 存储在名为“name”的属性中。假设 name (rdn) 属性的值应该类似于 name = "cn=Smith, Joe"。 cn 属性是应该返回的内容的一部分。但是,每当我检索对象的名称属性时,“cn=”似乎总是丢失。比如

$foo = get-aduser -filter 'Name -like "Smith, Joe"'

$foo.name

将返回 "Smith, Joe" 而不是 "cn=Smith, Joe"。有没有办法查询并让完整的 RDN 返回?

【问题讨论】:

  • 任何原因"CN=${foo.name}" 不能满足您的需求?用户对象的 RDN 将始终以 CN= 开头。

标签: powershell active-directory powershell-2.0


【解决方案1】:

另一种方法是获取对象的完整 DN,拆分 DN,并显示结果数组中的第一个元素,这将是 RDN,CN= 或其他,取决于对象

$((foo.distinguishedname).split(","))[0]

【讨论】:

    【解决方案2】:

    不是真正的答案,而是信息:

    首先RDN属性的attributeId由schema固定: 从 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”视为。

    【讨论】:

      【解决方案3】:

      $current.Substring($current.IndexOf('OU='))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-07
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-07
        相关资源
        最近更新 更多