コンピュータ名のリストと、それらが最後にログオンした日付を Active Directory から取得し、データテーブルで返そうとしています。名前を取得するのは簡単ですが、以下に示すように「lastLogon」または「lastLogonTimestamp」を追加しようとすると、lastLogonTimestamp に対して取得する値は「System._ComObject」だけです。
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;
}
LDP などのツールを使用して AD にクエリを実行すると、プロパティが存在し、データが入力されていることがわかります。どうすればこの情報を入手できますか?