gpt4 book ai didi

c++ - 是否有完整的 Active Directory 属性列表以及到 LDAP 的映射?

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:41 25 4
gpt4 key购买 nike

我正在使用 LDAP 接口(interface)(使用 iads.h)从 C++ 查询 Active Directory。我注意到用户的属性名称有所不同。

在 Powershell 中执行时

 Get-ADUser sih -Properties *

有一个属性 EmailAddress。从 C++ 查询 AD 时,找不到属性 EmailAddress。但是,使用 Powershell 和 C++ 都能找到邮件。

是否有任何映射,或者为什么某些属性存在于 Powershell 中,而不存在于 User 对象的 C++ 接口(interface)中?

注意:使用 Active Directory Explorer (https://technet.microsoft.com/en-us/sysinternals/adexplorer.aspx) 时,不会为用户显示 EmailAddress 属性。似乎这里显示的所有属性都可以从 C++ 中获取。

我正在寻找从 AD 到 LDAP 的映射,以提供从 AD 获取所有值的可能性。

最佳答案

这是两个不同的问题。

对于内部属性名称和 LDAP 显示名称之间的映射:它被称为架构 :-)

检索所有具有objectClass=attributeSchema 的对象并比较adminDisplayNamelDAPDisplayName 属性值:

Get-ADObject -Filter 'objectClass -eq "attributeSchema"' -SearchBase 'CN=Schema,CN=Configuration,DC=forest,DC=tld' -Properties adminDisplayName,lDAPDisplayName |Select-Object adminDisplayName,lDAPDisplayName

对于 PowerShell ActiveDirectory 模块中用户友好的属性名称(如 EmailAddress)和 LDAP 显示名称(如 mail)之间的映射,这些是硬-在 Microsoft.ActiveDirectory.Management.dll 程序集中编码为内部常量。

以下是使用一些反射魔法检索它们的方法:

# Import the Active Directory module:
Import-Module ActiveDirectory

# Now, obtain a reference to the assembly itself:
$ADAssembly = [Microsoft.ActiveDirectory.Management.ADEntity].Assembly

# Now we'll need to retrieve the internal class that defines the constants:
$LDAPAttributes = $ADAssembly.GetType('Microsoft.ActiveDirectory.Management.Commands.LdapAttributes')

# Then use GetFields() to retrieve the internal constants
$LDAPNameConstants = $LDAPAttributes.GetFields('Static,NonPublic') |Where-Object {$_.IsLiteral}

# Finally build a hashtable with the Property Names -> LDAP Name mapping
$LDAPPropertyMap = @{}
$LDAPNameConstants |ForEach-Object {
$LDAPPropertyMap[$_.Name] = $_.GetRawConstantValue()
}

$LDAPPropertyMap 现在包含您的映射

关于c++ - 是否有完整的 Active Directory 属性列表以及到 LDAP 的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com