【问题标题】:Get-ADUser cross forest search latencyGet-ADUser 跨林搜索延迟
【发布时间】:2020-04-24 22:51:54
【问题描述】:

使用 PowerShell,我正在尝试使用 Get-ADUserfilter 使用名称属性之一,如 givennamesurnameemployeeid 和 @ 对 ADUser 进行跨林搜索987654328@ 可以看到不指定GC端口时跨林搜索更快。我的理解是,GC 旨在更快地获取结果。

请参考下面我的Measure-Command测试结果,

查询:

  1. 为什么在给定示例中 GC 的结果较慢?这是因为跨森林搜索吗?
  2. Get-ADUserfilter 参数在某些属性上的工作速度是否比其他属性更快,例如 AD 属性具有某种优先顺序?
  3. 在某些情况下,跨森林的连续搜索是否会更快? (具有缓存功能)

非常感谢任何信息或参考。

【问题讨论】:

  • 为了使结果具有可比性,您至少需要确保您查询的是同一个域控制器。执行$server = Get-ADDomainController -Service GlobalCatalog -Discover,然后分别使用-Server "$server:3268"` 和-Server "$server" 重复测量
  • 嗨,Mathias,是的,这是有道理的。我会在一段时间后返回新结果。

标签: powershell active-directory


【解决方案1】:

我的理解是,GC 旨在更快地获取结果。

GC 旨在从整个 AD 林中查找结果,而无需单独查询每个域。如果您的林中只有一个域,那么确实没有任何理由使用 GC,并且有理由使用它(因为并非所有属性都复制到 GC,例如employeeID)。

  1. 为什么在给定示例中 GC 的结果较慢?这是因为跨森林搜索吗?

它可能会变慢的原因有很多。在您执行查询的那一刻,它可能很忙。我可以针对不同的请求访问不同的服务器(这就是 Mathias 的建议发挥作用的地方)。如果您的 AD 林中有多个域,那么 GC 只是一个更大的数据库。

如果它从 GC 返回的结果多于从 DC 中返回的结果,那么肯定会这样做(因为 Get-ADUser 返回结果的方式)。但是您的搜索似乎应该只返回一个结果。

  1. Get-ADUserfilter 参数在某些属性上的工作速度是否比其他属性更快,例如 AD 属性具有某种优先顺序?

这不是特定于 Get-ADUser,而是 AD 的工作原理。一些属性被索引,使查询更快(就像任何数据库一样)。有些属性不是。名字和姓氏被编入索引,employeeIDextensionAttribute11 没有被编入索引(这意味着必须查看每个用户帐户才能找到匹配项)。如果您使用-ResultSetSize 参数并将其设置为1,您可能会节省一点时间。这样,AD 知道它只需要找到一个结果,并且会在找到一个结果后停止查找。不过,这可能没有任何明显的效果。

  1. 在某些情况下,跨森林的连续搜索是否会更快? (具有缓存功能)

是的。我自己也见过这个。随后的相同查询会快得多。同样,对于任何数据库来说,这样的行为都是很正常的。

如果您担心性能,我会坚持使用DirectorySearcher,就像您在其他问题中所做的那样。您可以更好地控制正在发生的事情。

【讨论】:

  • 感谢加布里埃尔的详细解释!这肯定会帮助我在 PowerShell 中编写 AD 搜索脚本。
猜你喜欢
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
相关资源
最近更新 更多