主に、SQL Serverで特定のグループのメンバーであるユーザーの一覧を取得する必要がありました。私は完全に動作しているネット上の何かを見つけることができました。示すように、解決策は以下のとおりです。Active Directory - 特定のグループのメンバーであるユーザーとグループを取得する
今のCREATE PROCEDURE [dbo].[NES_GetADGroupMembers]
(@groupName VARCHAR(max))
AS
BEGIN
CREATE TABLE #MemberOfGroups
(
groupName varchar(400),
cn varchar(400),
displayName varchar(400)
)
SET NOCOUNT ON
DECLARE @t varchar(100), @t2 varchar(1000),
@ot varchar (4000), @tt varchar (4000);
DECLARE gC CURSOR FOR
SELECT cn, distinguishedName
FROM openquery (ADSI, 'SELECT cn, distinguishedName
FROM ''''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com''''
WHERE objectCategory = ''group''')
OPEN gC
FETCH NEXT FROM gC INTO @t, @t2
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ot = '''SELECT cn, displayName
FROM ''''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com''''
WHERE objectCategory = ''''Person'''' AND objectClass = ''''user''''
AND memberOf=''''' + @t2 + '''''';
SET @tt = 'select '+ ''''[email protected]+'''' +' As groupName, cn, displayName from openquery(ADSI,'+ @ot +''') order by cn'
INSERT INTO #MemberOfGroups (groupName, cn, displayName)
EXEC (@tt)
FETCH NEXT FROM gC INTO @t, @t2
END
CLOSE gC
DEALLOCATE gC
SELECT
groupName, displayName
FROM
#MemberOfGroups
、そのだけで入力されたグループのユーザーを返し、正常に動作します。
しかし、私は新しい要求を持っています。ユーザーが好きなように、グループにメンバーとして他のグループを持たせることができます。
WHERE条件でフィルタを更新して、objectClass = ''group''
を含めるようにしましたが、動作しません。
誰でもこれらのクエリについて少し知っていますし、グループ(入力グループのメンバー)も取得するのに役立ちますか?
あなたの問題はフィルタにあると思います。ObjectCategory = Personを取り出してください。「グループ」はおそらく人ではないので、答えが得られるかどうかを確認してください。 –
私はそれを削除しようとしましたが、グループで、しかし無駄に 'OR'ステートメントを追加しました。 –