Я использую приведенный ниже запрос для подключения к AD с SQL Server 2014. Идентификатор пользователя, используемый для связанного сервера ADSI, является администратором и обладает полными правами.
Этот запрос возвращает только 7 членов, но на самом деле 21 член.Powershell возвращает 21 участника (не может использовать его по разным причинам)
SELECT
sAMAccountName as Login,
CN as Name,
GivenName as FirstName,
SN as LastName,
DisplayName as FullName
FROM
OPENQUERY(ADSI, 'SELECT
sAMAccountname,
givenname,
sn,
displayname,
CN
FROM
''LDAP://DOMAIN/DC=...,DC=...''
WHERE
objectCategory = ''person''
AND objectClass = ''user''
AND memberOf = ''CN=group1_Users,OU=Groups,DC=...,DC=...''
ORDER BY CN')
На данный момент я не уверен, что может быть не так.Я огляделся, и кажется, что нет решения.
Я хочу передать это имя только одной конкретной группе.
Однако, делать обратное, то есть искать идентификатор пользователя, получать ADSPATH и передавать его для получения групп, участником которых является пользователь.
Это работает для меня, но мне это не нужно.
Рекурсивно запрашивать членство в группе AD через SQL
Я тоже пробовал это, но у меня все еще есть 7 членов
DECLARE @path NVARCHAR(MAX) = 'CN=group1_Users,OU=Groups,DC=...,DC=...',
SET @Query = 'SELECT cn, AdsPath, samAccountName
FROM OPENQUERY (ADSI, ''<LDAP://domain/DC=...,DC=...>;(&
(objectClass=User)(memberof:1.2.840.113556.1.4.1941:=' + @Path +
'));samAccountName,cn, adspath;subtree'')'
EXEC SP_EXECUTESQL @Query