使用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中随时保持同步。使用此处的数据。

等等

建议?

使用DirectorySearcher API读取/处理大量数据

尽可能在源代码处进行筛选。尽可能返回最小的属性集。

你可以利用DirectorySynchronization,但我想说,只有在你有大量客户端计算要做的情况下,这样做才有价值。我使用这种技术来管理AD中的照片。我有一个离线同步集,它将照片作为哈希,可以用来确保我只在需要的地方更新,当我更新时,我只从目录中提取自上次执行以来的更改。

对于基于pwdLastSet或lastLogonTimeStamp的操作,我将始终生成(LDAP(筛选器,允许我向AD请求最小的结果集。我将始终请求实际需要使用的最小数量的属性。