J'essaie de récupérer une liste de noms d'ordinateurs et la date à laquelle ils ont été connectés pour la dernière fois à partir d'Active Directory et de les renvoyer dans une base de données. Obtenir le nom est assez facile, mais lorsque je tente d'ajouter le « lastLogon » ou « lastLogonTimestamp » comme indiqué ci-dessous, les seules valeurs que je reçois pour la lastLogonTimestamp est « System._ComObject »Comment lister tous les ordinateurs et la dernière fois qu'ils ont ouvert une session dans AD?
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;
}
Si je fais une recherche AD en utilisant un outil comme LDP je peux voir que la propriété existe et est peuplée avec des données. Comment puis-je obtenir cette information?
IADsLargeInteger: COM-objet dans "Active DS Type Library", espace de noms ActiveDs –
Une meilleure utilisation 'DirectoryServices.AccountManagement' ni *** ActiveDS COM ***. _IMHO_ – Kiquenet