繁体   English   中英

使用SQL从活动目录中的“安全性”组获取用户列表

[英]Get the list of Users from Security group in active directory using SQL

我有一个表,其中包含安全组的成员列表。 我需要每天进行检查,以检查是否已添加或删除新成员并相应地更新表。 有没有一种方法可以使用SQL获取Active Directory中安全组的成员列表?

将服务器链接到Active Directory是通常的方法。

是一种更好的逐步设置方法。

然后创建一个包含您的LDAP查询的视图,您应该一切顺利。

这是我在其中一个系统上使用的功能:

CREATE VIEW adsi_to_app AS
SELECT convert(VARCHAR(20), u.sAMAccountName) collate SQL_Latin1_General_CP1_CI_AS "username",
    CASE 
        WHEN (u.userAccountControl & 2) <> 0
            THEN 'Disabled'
        WHEN CASE convert(BIGINT, u.accountExpires)
                WHEN 0
                    THEN '12/31/9999'
                WHEN 9223372036854775807
                    THEN '12/31/9999'
                ELSE dateadd(mi, (convert(BIGINT, u.accountExpires) / 600000000) - 157258080 + datediff(minute, GetUTCDate(), GetDate()), 0)
                END < getdate()
            THEN 'Expired'
        ELSE 'Active'
        END "account_status"
FROM OPENQUERY(ADSI, '<LDAP://DC=your,DC=domain,DC=goes,DC=here>;(&(objectCategory=Person)(objectClass=User)(memberOf=CN=GroupName,OU=Groups,DC=your,DC=domain,DC=goes,DC=here));sAMAccountName,userAccountControl,accountExpires;subtree') u

该排序规则是因为服务器具有区分大小写的排序规则。 OPENQUERY()ADSI是链接服务器对象的名称。

请注意,您可能需要启用即席查询才能使用OPENQUERY()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM