Ich versuche, eine Liste von Computernamen und das Datum, an dem sie zuletzt angemeldet wurden, aus Active Directory abzurufen und in einer Datentabelle zurückzugeben. Die Namen zu erhalten ist einfach genug, aber wenn ich versuche, die "lastLogon" oder "lastLogonTimestamp" wie unten gezeigt, die einzigen Werte, die ich für die lastLogonTimestamp erhalten ist "System._ComObject" hinzuzufügen
public DataTable GetListOfComputers(string domainName)
{
DirectoryEntry entry = new DirectoryEntry("LDAP://DC=" + domainName + ",DC=com");
DirectorySearcher search = new DirectorySearcher(entry);
string query = "(objectclass=computer)";
search.Filter = query;
search.PropertiesToLoad.Add("name");
search.PropertiesToLoad.Add("lastLogonTimestamp");
SearchResultCollection mySearchResultColl = search.FindAll();
DataTable results = new DataTable();
results.Columns.Add("name");
results.Columns.Add("lastLogonTimestamp");
foreach (SearchResult sr in mySearchResultColl)
{
DataRow dr = results.NewRow();
DirectoryEntry de = sr.GetDirectoryEntry();
dr["name"] = de.Properties["Name"].Value;
dr["lastLogonTimestamp"] = de.Properties["lastLogonTimestamp"].Value;
results.Rows.Add(dr);
de.Close();
}
return results;
}
Wenn ich AD mit einem Tool wie LDP abfrage, kann ich sehen, dass die Eigenschaft existiert und mit Daten gefüllt ist. Wie kann ich an diese Informationen gelangen?