Я хотел бы запросить некоторый атрибут пользователя в нашей AD, но на конкретном контроллере домена в C#. У нас есть несколько десятков контроллеров домена, и я подозреваю, что между ними есть проблема с репликацией. Я хотел бы очистить неиспользуемые учетные записи, для которых я хотел бы использовать атрибут времени последнего входа в систему, и я хотел бы запросить это на всех контроллерах домена один за другим (я знаю, что это немного похоже на грубое форсирование, однако я не собирался делать это слишком часто), поэтому я могу видеть, является ли самое последнее значение актуальным или нет. У меня был код для запроса всех контроллеров домена:
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();
И тут я застрял. Теперь я хотел бы получить отметку времени последнего входа пользователя со всех контроллеров домена. В прошлом я уже случайно удалил учетную запись, которая, казалось, не использовалась в течение длительного времени (проверка только на одном ДЦ), чем оказалось, что пользователь использует его каждый день, поэтому информация, поступающая с ДЦ, не синхронизировалась. Я знаю, что наиболее разумным действием было бы выяснить, что вызывает этот феномен неправильной синхронизации, однако в моем нынешнем статусе это заняло бы целую вечность и, вероятно, закончилось бы без каких-либо результатов... Заранее спасибо за любой конструктивный ответ/комментарий!