1. Use WMI to create connection to the computer passing username and password. Once the connection is created, query the CPU& memory by passing the query, similar as SQL. This way can get CPU & memory for remote PC and local PC. For example:
System.Management.ConnectionOptions Conn = new ConnectionOptions();
Conn.Username = mpusername;
Conn.Password = mppwd;
string scopestring = // + mpserver + /root/cimv2;
System.Management.ManagementScope Ms = new ManagementScope(scopestring);
Ms.Connect();
mos.Scope = Ms;
ObjectQuery oq = new ObjectQuery();
oq.QueryString = select * from Win32_Processor;
mos.Query = oq;
ManagementObjectCollection moc = mos.Get();
内存这块花了比较多的时间,之前的对象已经过期,不能使用了,最后找到这个类“Win32_PerfRawData_PerfOS_Memory”
ManagementObjectCollection mcr = mcp.getQueryResult(select * from Win32_ComputerSystem);
foreach (ManagementObject mo in mcr)
{
if (mo[TotalPhysicalMemory] != null)
{
totalm = long.Parse(mo[TotalPhysicalMemory].ToString());
}
}
ManagementObjectCollection moc = mcp.getQueryResult(select * from Win32_PerfRawData_PerfOS_Memory);
foreach (ManagementObject mo in moc)
{
string avilable = mo.GetPropertyValue(AvailableBytes).ToString();
avilablem = long.Parse(avilable);
}
2. Get local server’s CPU and momory information passing the WMI classes, such as “Win32_Processor”, “Win32_OperatingSystem”
ManagementClass mc = new ManagementClass(Win32_OperatingSystem);
ManagementObjectCollection moc = mc.GetInstances();
3. Use performance counter to get performance data passing the performance counter name, such as monitor.PerformanceCounterFun(Processor, _Total, % Processor Time). Normally we shoud get performance counter data several times, then use the average values.
虽然这些比较简单,但是自己还是想把它记录下来,希望对大家能有用!