使用DirectorySearcher API读取/处理大量数据
本文关键字:数据 处理 DirectorySearcher API 读取 使用 | 更新日期: 2023-09-27 18:01:52
上下文
-
OU 中有20万用户的Active Directory实例
-
在我们的领域中增长至1M的潜力
不是这方面的专家。我正在尝试为我需要轮询AD和的场景设计解决方案
-
检查PwdLastSet和LastLogonDate属性
-
根据每个用户的价值做出6种不同的决定(策略((锁定帐户、发送电子邮件等(
理想情况下,如果是数据库,我可以选择
- 打开连接
- 读取一小页的数据
- 关闭连接
- 通过应用程序在内存中处理它们
- 重复
(因此,把它留给连接池来处理事情,并允许其他人做他们的事情(。
我真的很想知道这种情况下的最佳实践/方法,它是可扩展的。我只需要为所有用户获取这2个属性(当然我们有过滤器,例如删除不活动的(
就我个人而言,我想知道我是否应该
-
使用我们的自定义调度程序服务来运行Powershell(或.NET(,使用DirectorySearcher,打开连接(ssl(,使用分页一次读取100/1000个用户,并在内存中处理它们。与AD的连接保持打开
-
打开与AD的连接,在CSV(分页(中获取所有用户的转储,关闭连接,将其写入数据库以供其他任务处理。但是,这将是一项夜间工作,具有DB的潜在卷权限。
-
在数据库表中复制这两个属性,并通过我们的应用程序在AD中随时保持同步。使用此处的数据。
等等
建议?
尽可能在源代码处进行筛选。尽可能返回最小的属性集。
你可以利用DirectorySynchronization,但我想说,只有在你有大量客户端计算要做的情况下,这样做才有价值。我使用这种技术来管理AD中的照片。我有一个离线同步集,它将照片作为哈希,可以用来确保我只在需要的地方更新,当我更新时,我只从目录中提取自上次执行以来的更改。
对于基于pwdLastSet或lastLogonTimeStamp的操作,我将始终生成(LDAP(筛选器,允许我向AD请求最小的结果集。我将始终请求实际需要使用的最小数量的属性。