我想将组织单位 guid (filtering objectClass = ''organizationalunit'') 加入用户的组织 (filtering objectClass = ''User'')... 我没有看到匹配代码(来自 AD 的用户属性中的 OU guid)以匹配我拥有所有 OU objectClass = ''organizationalunit'') 的数据集
-- dataset to get all OUs --I have an OU ObjectGUId here! it looks ok.
select *
FROM OPENQUERY([ADSI],
'SELECT
Name, ADsPath,objectguid , parentguid
FROM ''myLDAP path''
WHERE
objectClass = ''organizationalunit''
')
AS t
-- dataset to get users attributes--I do not see an OU ObjectGUId related to users OU structure
-- I checked here but no luck http://www.kouti.com/tables/userattributes.htm
select *
FROM OPENQUERY([ADSI],
'SELECT
userPrincipalName,ADsPath,
Name,
displayName,
objectCategory,
SN,
givenName,
ST,
SamAccountName,
DistinguishedName,
ObjectGUID,
physicalDeliveryOfficeName,
department,
ObjectSID,
mail ,preferredOU , ou ,o
FROM ''myLDAP path''
WHERE
objectClass = ''User''
')
答案 0 :(得分:1)
如果我正确理解了您的问题,您希望加入用户所在单位部门的用户列表。
Active Directory 是一个树状结构,而distinguishedName 是描述对象所在位置的路径。
因此,要从一个对象移动到该对象所在的容器,您需要移除以逗号分隔的 distinctName 的第一个元素。
所以具有distinguishedName cn=user,ou=container,dc=domain,dc=local 的用户驻留在组织单位ou=container,dc=domain,dc=local
因此,解决方案或多或少类似于来自用户的 SELECT RIGHT(distinguishedName, CHARINDEX(",", distingishedName) + 1),然后您将其加入到组织单位 distinctName 中。
对象不是按照您建议的方式通过 objectGUID 链接的。
很抱歉,我无法为您提供直接可用的 SQL 代码,您可能比我更擅长这个 ;-)