【问题标题】:Active directory - ldap attribute createTimeStamp in Windows Server 2008 R2Active Directory - Windows Server 2008 R2 中的 ldap 属性 createTimeStamp
【发布时间】:2010-09-01 09:55:19
【问题描述】:

要检查过去一年为特定域创建了多少用户,我查询如下,

(&(objectCategory=person)(objectClass=user)(!(sAMAccountType=805306370))(createTimeStamp>=20090831022227.0Z))

我有两个域控制器,DC-1 是 Windows Server 2008,DC-2 是 Windows Server 2008 R2,此查询适用于 2008 Server,我发现去年有 1500 个新用户,但 2008 R2 Server 仅提供 64 个用户。我已经搜索了域级别和不同的 OU 级别,结果计数没有变化(64),但用户不同。我还检查了其他域 DC 和所有其他服务器,它工作正常,单独的另一个 2008 R2 服务器给出了相同的结果计数,64。我还确认这不是复制问题。

需要帮助。

【问题讨论】:

  • 这与编程和/或代码有什么关系吗?
  • 我们可以使用相同的查询并使用程序生成报告。但我在用户和计算机向导中使用此查询(右键单击 DC/OU - 查找 - 自定义搜索 - 高级 - 键入查询 - FindNow)

标签: windows networking active-directory network-programming ldap


【解决方案1】:

我觉得你在搜索条件中使用!(sAMAccountType=805306370) 很奇怪。 sAMAccountType 有不同的值。新操作系统有新的支持值(比较http://msdn.microsoft.com/en-us/library/cc220839(PROT.13).aspxhttp://msdn.microsoft.com/en-us/library/cc228417(PROT.13).aspx。此外,您写的是用户帐户,所以您的兴趣点是SAM_USER_OBJECT0x30000000805306368)。

所以我建议使用查询

(&
  (objectCategory=person)
  (objectClass=user)
  (sAMAccountType=805306368)
  (createTimeStamp>=20090831022227.0Z)
)

并比较两个 DC 上的结果。如果您确实有不同的结果,请选择一组中的一些帐户而不是另一组中的一些帐户,然后显式搜索该帐户。

【讨论】:

  • 什么不起作用?你在两个 DC 上有不同的结果吗?您是否发现至少一个用户帐户在一组中而不在另一组中?
  • 您建议的查询无效。让我以不同的方式解释这个问题,我正在使用 DC 级别的搜索查询 - 结果是 64 为“用户”容器应用的搜索查询 - 结果是 64 为名为“HR”的 OU 应用的搜索查询 - 结果是 64为名为“Test”的 OU 应用的搜索查询 - 结果为 64 这怎么可能。
  • @Mack:我建议您在两台服务器上验证 LDAP_OPT_SIZELIMIT 会话选项(请参阅msdn.microsoft.com/en-us/library/aa367019.aspx)。您没有发布任何代码示例。你使用结果分页吗?您还可以从 1500 中挑选一个不在 64 用户列表中的帐户,然后在 Windows Server 2008 R2 上明确搜索此帐户。如果你确实找到了,你只是对结果的默认限制有问题,你可以通过结果分页来解决这个问题(参见msdn.microsoft.com/en-us/library/aa367011.aspxsupport.microsoft.com/kb/2009267)。
  • @Mark:对于结果配对,您可以使用ldap_create_page_control()ldap_search_ext_s()ldap_parse_result()(参见publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/…)或更好的ldap_search_init_page()、ldap_get_next_page_s()。在 .NET 中,您根本不会遇到分页问题。您可以只设置DirectorySearcherPageSizeSizeLimit 属性,调用FindAll() 方法并查看结果。我使用了上述所有方法,所以如果您发现您的问题确实是大小限制或分页问题,​​我可以提供帮助。
  • @Oleg:我没有任何分页或会话限制。使用上面的查询,我得到了相同的 1500 个用户,但唯一的变化是,我使用 whenCreated 而不是 createTimeStamp。我仍然很想知道 createTimeStamp 出了什么问题,仅 2008 R2 也是如此。
【解决方案2】:

对于 createTimeStamp :

(&(objectCategory=person)(objectClass=user)(!(sAMAccountType=805306370))(createTimeStamp>=20090831022227.0Z)) 这将只获取 64 个用户,而与域/OU 无关。

对于何时创建:

(&(objectCategory=person)(objectClass=user)(!(sAMAccountType=805306370))(whenCreated>=20090831022227.0Z)) 这将获取所有最近创建的用户。

我仍然很困惑,为什么仅 2008 R2 的 createTimeStamp 行为会有所不同。

PS:我的域功能级别和森林功能级别都是2008 R2

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多