Hi all,\
I have small issue.
I wrote the code which check logon times of user on every domain controller, after that, it return the latest one.
The problem is that if any of domain controller is off/faulty - I get an error "server is not operational" and the function stops.
How to make it continue? for example: one of the DCs is not operational, so the function skips it and continue checking the logon times on other ones.
Please assist.
String Lastlogon(string username, string domainname)
{
try
{
{
DirectoryContext context = new DirectoryContext(DirectoryContextType.Domain,domainname);
DateTime latestLogon = DateTime.MinValue;
string servername = null;
DomainControllerCollection dcc = DomainController.FindAll(context);
foreach (DomainController dc in dcc)
{
DirectorySearcher ds;
using (dc)
using (ds = dc.GetDirectorySearcher())
{
ds.Filter = "(&(objectClass=user)(|(cn=" + username + ")(Mail=" + username + ")(userPrincipalName=" + username + ")(sAMAccountName=" + username + ")))";
ds.PropertiesToLoad.Add("lastLogon");
ds.SizeLimit = 1;
SearchResult sr = ds.FindOne();
if (sr != null)
{
DateTime lastLogon = DateTime.MinValue;
if (sr.Properties.Contains("lastLogon"))
{
lastLogon = DateTime.FromFileTime((long)sr.Properties["lastLogon"][0]);
}
if (DateTime.Compare(lastLogon, latestLogon) > 0)
{
latestLogon = lastLogon;
servername = dc.Name;
}
}
}
}
return servername.ToString() + " - " + latestLogon.ToString();
}
}