C#利用WMI獲取 遠程計算機硬盤數據


一、利用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");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM