我想在我们的 AD 中查询一些用户属性,但在 C# 中的特定 DC 上。我们有几十个 DC,我怀疑它们之间存在一些复制问题。我想清理未使用的帐户,我想使用最后一次登录时间属性,我想在所有 DC 上一次次查询这个(我知道这有点像暴力破解,但是我不打算经常做这样的事情)所以我可以查看最新的值是否是最新的。我有查询所有 DC 的代码:
Domain TestDomain = Domain.GetCurrentDomain();
Console.WriteLine("Number of found DCs in the domain {0}", TestDomain.DomainControllers.Count);
foreach (DomainController dc in TestDomain.DomainControllers)
{
Console.WriteLine("Name: " + dc.Name);
///DO STUFF
}
而且我还找到了构建可以从 AD 查询用户的代码的帮助:
PrincipalContext context = new PrincipalContext(ContextType.Domain, "test.domain.com");
string userName = "testusername";
UserPrincipal user = UserPrincipal.FindByIdentity(context, userName);
Console.WriteLine(user.LastLogon.Value.ToString());
Console.ReadKey();
在这里我卡住了。现在我想从所有 DC 获取用户的最后登录时间戳。在过去,我已经意外删除了似乎长时间未使用的帐户(仅检查一个 DC),结果发现用户每天都在使用它,因此来自 DC 的信息没有同步。我知道最合理的行动是审查导致这种不正确同步现象的原因,但是在我目前的状态下,这将需要很长时间并且可能在没有任何发现的情况下结束......提前感谢任何建设性的回应/评论!