列出 Active Directory 用户

sab*_*rna 2 sql-server linked-server active-directory

我的老板发来请求我说:我想要一个 SQL 查询,它列出特定组的所有域用户。我开始搜索查询。我找到了几个使用 Linked Server 的解决方案。

EXEC master.dbo.sp_addlinkedserver 
@server = N'ADSI', 
@srvproduct=N'Active Directory Service Interfaces', 
@provider=N'ADSDSOObject', 
@datasrc=N'adsdatasource'
Run Code Online (Sandbox Code Playgroud)

然后

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'ADSI',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'DOMAIN\USER',
@rmtpassword='*********'
Run Code Online (Sandbox Code Playgroud)

我用域管理员用户的信息替换了usernamepassword,但出现此错误

无法为链接服务器“ADSI”创建 OLE DB 提供程序“ADsDSOObject”的实例。

我们的域名是akilus.local,但我没有替换数据源。

可能是什么问题?

Tho*_*ger 5

为什么需要 SQL Server 来执行此任务?这不是 RDBMS 的目标。您将不得不费一番周折才能让 SQL Server 找到这些数据。

最快/最简单/最自然的方法来做到这一点?Active Directory PowerShell 模块。这是一个单行:

Get-ADGroupMember "administrators" | Select-Object Name, DistinguishedName, ObjectClass
Run Code Online (Sandbox Code Playgroud)

简而言之,让这样的逻辑远离 SQL Server并将其放在它所属的操作系统中