gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:16:32 25 4
gpt4 key购买 nike

上下文

  • 一个 OU 中有 20 万用户的 Active Directory 实例

  • 在我们的域中有可能增长到 100 万

不是这方面的专家。我正在尝试为需要轮询 AD 和

的场景提出解决方案设计
  • 检查 PwdLastSet 和 LastLogonDate 属性

  • 根据每个用户的值(value)(锁定帐户、发送电子邮件等)做出 6 种不同的决定(策略)

理想情况下,如果它是数据库,我可以选择

  • 打开连接
  • 阅读一小页有值(value)的数据
  • 关闭连接
  • 通过应用程序在内存中处理它们
  • 重复

(因此将它留给连接池来处理事情并允许其他人做他们的事情)。

我真的很想知道在这种情况下可扩展的最佳实践/方法。我只需要为所有用户获取这 2 个属性(当然我们有过滤器 - 例如删除非事件)

就我个人而言,我在想我是否应该

  • 使用我们的自定义调度程序服务运行 Powershell(或 .NET),使用 DirectorySearcher,打开连接 (ssl),使用分页一次读取 100/1000 个用户并在内存中处理它们。与 AD 的连接保持打开状态

  • 打开与 AD 的连接,获取 CSV 中所有用户的转储(分页),关闭连接,将其写入数据库以供其他任务处理。但这必须是一项夜间工作,具有对数据库的潜在批量权限。

  • 将这两个属性复制到数据库表中,并在它们通过我们的应用程序在 AD 中更改时保持同步。从这里使用数据。

等等。

建议?

最佳答案

尽可能在源头进行过滤。尽可能返回最小属性集。

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

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

关于c# - 使用 DirectorySearcher API 读取/处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com