基本上,我正在开发一个用于管理 Active Directory 的应用程序,我添加了一个很大的“安全”层,即能够将允许他们访问/搜索的 OU GUID 分配给特定用户。
我现在面临的问题是,考虑到有时会收集大量 GUID(1200ish)并且仅从这些特定的 OU 返回结果,似乎没有一种很好的方式来查询 AD。
有谁知道是否有一种方法可以使用多个 DirectorySearchers 或类似方法来实现这一目标而不会对性能造成太大影响?
-- 这在 SQL 中很容易...... :-/
基本上,我正在开发一个用于管理 Active Directory 的应用程序,我添加了一个很大的“安全”层,即能够将允许他们访问/搜索的 OU GUID 分配给特定用户。
我现在面临的问题是,考虑到有时会收集大量 GUID(1200ish)并且仅从这些特定的 OU 返回结果,似乎没有一种很好的方式来查询 AD。
有谁知道是否有一种方法可以使用多个 DirectorySearchers 或类似方法来实现这一目标而不会对性能造成太大影响?
-- 这在 SQL 中很容易...... :-/
有几种方法可以做到这一点:
DirectorySearcher
对象,则可DirectorySearcher
以为要搜索的每个 OU 创建一个对象,并将SearchRoot
每个对象设置为要搜索的 OU。但是这里的事情确实变得复杂了。如果您不希望用户 A 看到 OU B 中的对象,您可以对用户 A 隐藏该 OU,当然。但是用户 A 可能仍然能够看到其中包含来自 OU B 的用户的组。所以用户 A 仍然会看到 OU B 存在的证据。所以,
如果您选择选项 1 或 2,那么您在查看组成员身份时也必须过滤来自组的结果。
如果您使用选项 3,它可能会破坏 PowerShell 脚本(如果他们曾经使用过它们),因为 PowerShell 会尝试读取组中的每个成员并在不能读取时崩溃。