一、利用WMI獲取 遠程計算機硬盤數據,先引入"System.Management.dll"文件。
/// <summary>
/// 獲取存儲服務器硬盤信息。
/// </summary>
/// <returns></returns>
public Dictionary<string, string> GetDiskInfo()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
double free = 0;
double used = 0;
double total = 0;
string name = string.Empty;
//1024*1024*1024
long GB = 1024 * 1024 * 1024;
//設定生成的WMI所需的所有設置
System.Management.ConnectionOptions Conn = new ConnectionOptions();
//設定用於WMI連接操作的用戶名
Conn.Username = "Administrator";
//設定用戶的口令
Conn.Password = "password";
string IPaddress = "172.16.5.214"; //遠程存儲的IP
//設定用於執行WMI操作的范圍
System.Management.ManagementScope Ms = new ManagementScope("\\\\" + IPaddress + "\\root\\cimv2", Conn);
try
{
//連接到實際操作的WMI范圍
Ms.Connect();
//設定通過WMI要查詢的內容
ObjectQuery Query = new ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3");
//ObjectQuery Query = new ObjectQuery("select * from Win32_LogicalDisk where deviceid='C:'");
//WQL語句,設定的WMI查詢內容和WMI的操作范圍,檢索WMI對象集合
ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Ms, Query);
//----ManagementObjectSearcher managerSearch = new ManagementObjectSearcher(wqlObjectQuery);//獲取本地磁盤--------
//異步調用WMI查詢
ManagementObjectCollection ReturnCollection = Searcher.Get();
//通過對產生的WMI的實例集合進行檢索,獲得硬盤信息
foreach (ManagementObject Return in ReturnCollection)
{
//注意盤符要有:號
string deviceid = "D:";
if (Return["Name"].ToString() == deviceid)
{
name = "磁盤名稱:" + Return["Name"].ToString();
//硬盤的可用空間
free = Convert.ToDouble(Return["FreeSpace"]) / GB;
//硬盤的已用空間
used = (Convert.ToDouble(Return["Size"]) - Convert.ToDouble(Return["FreeSpace"])) / GB;
//硬盤的總空間
total = Convert.ToDouble(Return["Size"]) / GB;
}
}
}
catch (Exception ee)
{
log.Error(ee.StackTrace);
log.Error(ee.Message);
}
dic.Add("Name",name.ToString());
dic.Add("Size", total.ToString("F1"));
dic.Add("Used", used.ToString("F1"));
dic.Add("FreeSpace", free.ToString("F1"));
return dic;
}
二、獲得遠程計算機的其他數據
//網絡 Query = new System.Management.ObjectQuery("Select IODataBytesPerSec from Win32_PerfRawData_PerfProc_Process");
//CPU Query = new System.Management.ObjectQuery("select LoadPercentage from Win32_Processor ");
//總內存 Query = new System.Management.ObjectQuery("Select TotalVisibleMemorySize from Win32_OperatingSystem");
//可用內存 Query = new System.Management.ObjectQuery("Select FreePhysicalMemory from Win32_OperatingSystem");