AD で一部のユーザー属性をクエリしたいのですが、特定の DC で C# を使用しています。数十の DC があり、それらの間にレプリケーションの問題があると思われます。未使用のアカウントのクリーンアップを行い、最終ログオン時間属性を使用して、すべての DC でこれを 1 つずつ照会したいと考えています (これは総当たり攻撃に少し似ていることはわかっていますが、ただし、あまり頻繁に行うつもりはありません) ので、最新の値が最新かどうかを確認できます。すべての 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 からの情報が同期されていないことが判明したため、長い間使用されていないように思われるアカウントを誤って削除しました (1 つの DC のみを確認してください)。最も合理的な行動は、この誤った同期現象の原因を確認することであることは承知していますが、私の現在の状態では、時間がかかり、おそらく何の発見もなく終了するでしょう...建設的な応答/コメントを事前にありがとう!