Пример #1
0
 public static void GetOperatingSystemInfo(ManagementScope scope, ref OperatingSystemInfo OsInfo, ref string systemPath, ref string systemVolume)
 {
     OsInfo = WMIUtils.GetOperatingSystemInfo(scope);
     using (ManagementObject managementObject = WMIUtils.QueryFirst(scope, "Select * from Win32_OperatingSystem"))
     {
         systemPath   = managementObject["SystemDirectory"].ToString().Replace("\\system32", "");
         systemVolume = systemPath.Substring(0, 2);
     }
 }
Пример #2
0
    public static VolumeInfo[] GetVolumes(ManagementScope scope)
    {
        ObjectQuery         query          = new ObjectQuery("Select * from Win32_LogicalDisk");
        List <VolumeInfo>   volumeInfoList = new List <VolumeInfo>();
        OperatingSystemInfo OsInfo         = (OperatingSystemInfo)null;
        string empty1 = string.Empty;
        string empty2 = string.Empty;

        WMIUtils.GetOperatingSystemInfo(scope, ref OsInfo, ref empty1, ref empty2);
        using (ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(scope, query))
        {
            using (ManagementObjectCollection objectCollection = managementObjectSearcher.Get())
            {
                foreach (ManagementObject managementObject in objectCollection)
                {
                    try
                    {
                        uint num1 = (uint)managementObject["DriveType"];
                        if ((int)num1 == 3)
                        {
                            string str1 = managementObject["Name"].ToString();
                            string str2 = managementObject["FileSystem"].ToString();
                            if (!string.IsNullOrEmpty(str1))
                            {
                                if (!string.IsNullOrEmpty(str2))
                                {
                                    VolumeInfo volumeInfo1 = new VolumeInfo();
                                    volumeInfo1.DriveLetter = str1.Replace(":", "");
                                    volumeInfo1.Format      = str2;
                                    volumeInfo1.Label       = managementObject["VolumeName"].ToString();
                                    volumeInfo1.DiskSizeMB  = (long)((ulong)managementObject["Size"] / 1048576UL);
                                    volumeInfo1.FreeSpaceMB = (long)((ulong)managementObject["FreeSpace"] / 1048576UL);
                                    volumeInfo1.DriveType   = (int)num1;
                                    int num2 = empty2.StartsWith(str1) ? 1 : 0;
                                    volumeInfo1.IsSystemVolume = num2 != 0;
                                    VolumeInfo volumeInfo2 = volumeInfo1;
                                    volumeInfo2.UsedSpaceMB = volumeInfo2.DiskSizeMB - volumeInfo2.FreeSpaceMB;
                                    volumeInfoList.Add(volumeInfo2);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
        return(volumeInfoList.ToArray());
    }
Пример #3
0
 public HostCfgInfo GetCfg(string address, string username, string password)
 {
     using (IVirtualSystemManagementService managmentService = VirtualSystemManagementService.GetVirtualSystemManagmentService(this._Host))
     {
         using (IVirtualSystemManagementServiceSettingData serviceSettingData = VirtualSystemManagementServiceSettingData.GetRelated(managmentService).FirstOrDefault <IVirtualSystemManagementServiceSettingData>())
         {
             ManagementScope  server           = WMIUtils.ConnectToServer(address, username, password);
             ManagementObject managementObject = WMIUtils.QueryFirst(server, "Select * From Win32_ComputerSystem");
             return(new HostCfgInfo()
             {
                 Name = this._Host.ElementName,
                 DefaultExternalDataRoot = serviceSettingData.DefaultExternalDataRoot,
                 DefaultVirtualHardDiskPath = serviceSettingData.DefaultVirtualHardDiskPath,
                 CpuNum = (long)(uint)WMIUtils.GetPropertyValue((ManagementBaseObject)managementObject, "NumberOfLogicalProcessors"),
                 Ram = (long)(ulong)WMIUtils.GetPropertyValue((ManagementBaseObject)managementObject, "TotalPhysicalMemory"),
                 Volumes = SystemStateReader.GetVolumes(server),
                 VirtualSwitches = this.GetAllVirtualSwitchesWithUuid().Values.Select <IVirtualSwitch, VirtualSwitchInfo>((Func <IVirtualSwitch, VirtualSwitchInfo>)(vs => vs.GetCfg())).ToList <VirtualSwitchInfo>(),
                 OsInfo = WMIUtils.GetOperatingSystemInfo(server)
             });
         }
     }
 }
Пример #4
0
 public OperatingSystemInfo GetOS(string address, string username, string password)
 {
     using (VirtualSystemManagementService.GetVirtualSystemManagmentService(this._Host))
         return(WMIUtils.GetOperatingSystemInfo(WMIUtils.ConnectToServer(address, username, password)));
 }
Пример #5
0
    public static SystemState GetSystemState(ManagementScope scope, ManagementScope defaultScope, string serverName, ILogger logger)
    {
        SystemState systemState = new SystemState();

        try
        {
            systemState.RAM  = CUtils.RoundUp(WMIUtils.GetRAM(scope) / 1048576L);
            systemState.CPUs = WMIUtils.GetNumberOfCPUs(scope);
            WMIUtils.GetOperatingSystemInfo(scope, ref systemState.OsInfo, ref systemState.SystemPath, ref systemState.SystemVolume);
            try
            {
                string str = CUtils.PathToUNC(serverName, systemState.SystemPath) + "\\System32\\hal.dll";
                if (File.Exists(str))
                {
                    FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(str);
                    systemState.HalInternalName = versionInfo.InternalName;
                    systemState.HalVersion      = versionInfo.FileVersion;
                }
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Verbose("Could not get Hal information. Exception: " + ex.Message, "SystemState");
                }
                throw;
            }
            try
            {
                systemState.ProgramFilesPath = WMIUtils.GetRemoteRegistryValueString(defaultScope, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", "ProgramFilesDir");
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Verbose("Could not get \"Program Files\" path. Exception: " + ex.Message, "SystemState");
                }
                throw;
            }
            try
            {
                systemState.NetworkAdapters = SystemStateReader.GetNetworkAdapterList(scope);
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Verbose("Could not get the logical network adpater info from " + serverName + ". Exception: " + ex.Message, "SystemState");
                }
                throw;
            }
            try
            {
                systemState.Volumes = SystemStateReader.GetVolumes(scope);
            }
            catch (Exception ex)
            {
                if (logger != null)
                {
                    logger.Verbose("Could not get the volume info from " + serverName + ". Exception: " + ex.Message, "SystemState");
                }
                throw;
            }
        }
        catch (Exception ex)
        {
            if (logger != null)
            {
                logger.Verbose("Exception thrown getting the system state for server " + serverName + ". Exception: " + ex.Message, "SystemState");
            }
            throw;
        }
        return(systemState);
    }