先说序言:
我在 4 个不同的域上的 4 个不同的 Windows Server 上测试了我刚刚编写的一个程序。我首先测试的那个向我显示了所有用户以及所有用户的lastLogon
属性。我可以从他们的 12 个域控制器中的任何一个以及他们的现场交换服务器中获取此信息。
我测试此软件的下一个客户端出现了一些问题。我收到了 7 个具有属性的用户lastLogon
。其余的用户向我的 C# 程序返回“Null”。然后,我继续使用各种 Powershell 脚本进行测试,以验证这不是我编程的问题。Powershell 返回了12/31/1600 7:00:00 PM
这些用户。当我打开Attribute Editor
Active Directory 时,这些用户的日期最早显示为今天。我在此客户端的两个域控制器上都进行了测试(它们只有 2 个较小的客户端),结果相同。
最后,我在将要使用该软件的客户的域控制器上对其进行了测试。它运行良好。就像第一个客户一样。
第一个客户端配置:
一些系统采用 Windows Server 2008 Standard,另一些系统采用 Enterprise。
第二个客户端配置:
两台机器上均安装 Windows Server 2012 R2 Standard
第三个客户端配置:
测试的机器上有 Windows Server 2012 R2 Datacenter。
我不接受“属性lastLogon
未被复制”就是答案的答案。这毫无意义。如果是这样的话,它在任何这些设备上都无法工作。
另外,差点忘了,我发现该lastLogonTimestamp
属性在第二个客户端的配置上也不起作用。Powershell 进行了测试以验证。
我希望得到一些帮助来彻底解决这个问题,以便我可以提交我的代码以供使用。
提前致谢,
账单
答案1
LastLogon 不会被复制,LastLogonTimeStamp 会根据某些参数和条件进行复制。给定 DC 上给定用户的 LastLogon 为 NULL 意味着 DC 从未对该用户进行过身份验证。他们可能已登录到域,但他们已由域中的另一个 DC 进行验证。
示例 1:假设您有一个纽约 DC 和一个加利福尼亚 DC。除非这些用户经常在站点之间旅行,否则当您查询纽约 DC 时,加利福尼亚用户的 lastLogon 属性将为 NULL。因为加利福尼亚的用户由加利福尼亚 DC 进行身份验证,而 LastLogon 是不可复制的属性。示例 2:当您建立一个新的 DC 时,LogonAttribute 对每个人来说都将为 NULL,直到它运行几个星期为止。
答案2
我记得这个属性是存在的,但是当您的域功能级别低于某个值时不会使用。所有这些域是否都至少运行 Windows 2008 功能级别?也许您没有获取值的域仍然运行在 2003 上。