将针对活动直接组的SQL查询的返回限制为特定的组织单位

高平原格里夫特

我有一个查询来获取AD人员所在的所有组;但是我无法将结果限制为仅选择想要的组织单位。这是我的查询:

-- Test Variable --
DECLARE @Username NVARCHAR(254) = 'ABC'


DECLARE
     @DomainController  NVARCHAR(50)    = N'DC=DOMAIN,DC=COM'
    ,@Fields            NVARCHAR(256)   = N'ADsPath,cn'
    ,@ParamDefn         NVARCHAR(50)    = N'@PathOut NVARCHAR(1024) OUTPUT'

DECLARE
     @SQL   NVARCHAR(4000)
    ,@Path  NVARCHAR(1024)

SET @SQL =
'SELECT @PathOut = distinguishedName
FROM OPENQUERY(ADSI, ''
SELECT distinguishedName
FROM ''''LDAP://' + @DomainController + '''''
WHERE 
    objectClass = ''''user''''
AND sAMAccountName = ''''' + @Username + ''''''')'

EXEC sp_executesql @SQL, @ParamDefn, @PathOut = @Path OUTPUT

SET @SQL =
'SELECT *
FROM OPENQUERY (ADSI, ''<LDAP://' + @DomainController + '>;(&(objectClass=group)(member:1.2.840.113556.1.4.1941:=' + @Path +'));' + @Fields + ';subtree'')'

EXEC SP_EXECUTESQL @SQL

这将返回其中的所有组@Username都是成员,这很棒。但是,结果返回时该ADsPath列看起来像这样:

LDAP://CN=Group1,OU=Role Groups,OU=Groups,DC=DOMAIN,DC=COM
LDAP://CN=Group2,OU=Application Groups,OU=Groups,DC=DOMAIN,DC=COM
LDAP://CN=Group3,OU=Role Groups,OU=Groups,DC=DOMAIN,DC=COM
LDAP://CN=Group4,OU=File System Groups,OU=Groups,DC=DOMAIN,DC=COM

我的问题是:如何更改查询,以便(例如)仅OU=Role Groups返回

我目前看到的唯一成功的方法是ADsPath使用字符串函数检查事件后的内容,如果可以避免的话,我不想走那条路,因为获取所有组然后似乎效率不高得到该结果的子集(更不用说其他方式的解决方案了)。

培根钻头

也许我缺少了一些东西,但是将查询限制为特定OU的最直接方法是向ADSI查询添加另一个过滤器。

如果要对ADSI使用LDAP方言,则可以将其添加(distinguishedName=*,OU=Role Groups,OU=Groups,DC=DOMAIN,DC=COM)到ADSI过滤器中。

如果要将SQL方言用于ADSI,可以将AND distinguishedName = '*,OU=Role Groups,OU=Groups,DC=DOMAIN,DC=COM'ADSI查询添加到WHERE子句中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将查询结果限制为特定行

来自分类Dev

将SQL查询限制为几个结果

来自分类Dev

活动记录将所有查询限制为日期范围

来自分类Dev

活动记录将所有查询限制为日期范围

来自分类Dev

将SSH CA证书限制为特定用户/组

来自分类Dev

将应用注册访问权限限制为特定组

来自分类Dev

如何将访问“对等链码升级”限制为特定组织

来自分类Dev

限制为0的SQL查询

来自分类Dev

将 sql 查询限制为仅 col 聚合 = 0 的行

来自分类Dev

以5组为单位返回特定ID的SQL

来自分类Dev

将WHERE子句限制为SQL中的特定SELECT语句

来自分类Dev

如何将LINQ查询限制为给定营销活动的营销列表?

来自分类Dev

Azure ARM VNET:如何将RDP访问限制为一组特定的IP

来自分类Dev

如何使用SFTP将多个组或用户限制为特定的文件夹?

来自分类Dev

LINQ查询将返回的值限制为List <String>中匹配的值

来自分类Dev

将口才模型限制为特定的列

来自分类Dev

将点击限制为特定形状

来自分类Dev

将属性限制为特定值

来自分类Dev

将UIWebView限制为特定的URL(Swift)

来自分类Dev

将搜索限制为特定的文档类型

来自分类Dev

将点击限制为特定形状

来自分类Dev

将jQuery动作限制为特定元素

来自分类Dev

将GtkFileChooser限制为特定路径

来自分类Dev

将 VM 搜索限制为特定集群?

来自分类Dev

如何将MySQL查询结果限制为特定结果?

来自分类Dev

将jquery脚本的范围限制为直接祖先

来自分类Dev

将SQL查询限制为仅扫描少于500条记录的表

来自分类Dev

将 SQL 查询限制为一对一连接

来自分类Dev

SQL Server:是否可以将where子句限制为预先声明的列表中的特定值

Related 相关文章

热门标签

归档