I want to query our servers to see look for disconnected/idle sessions. I know I can use 'query.exe', but I'd prefer something that's easier to work with from code.
WMI would be my preference.
Thanks.
If you are using a .NET language, you might try Cassia. In C#, the code would be:
using System;
using Cassia;
namespace CassiaSample
{
public static class Program
{
public static void Main(string[] args)
{
ITerminalServicesManager manager = new TerminalServicesManager();
using (ITerminalServer server = manager.GetRemoteServer("server-name"))
{
server.Open();
foreach (ITerminalServicesSession session in server.GetSessions())
{
if ((session.ConnectionState == ConnectionState.Disconnected)
||
(session.ConnectionState == ConnectionState.Active)
&& (session.IdleTime > TimeSpan.FromMinutes(1)))
{
Console.WriteLine("Session {0} (User {1})", session.SessionId, session.UserName);
}
}
}
}
}
}
EDIT: Updated sample code for Cassia 2.0.