Esempio n. 1
0
        public static ConnectionOptions GetConnectOptions(string machineName, WMIPollingSettings wps)
        {
            var co = new ConnectionOptions();

            if (machineName == Environment.MachineName)
            {
                return(co);
            }
            switch (machineName)
            {
            case "localhost":
            case "127.0.0.1":
                return(co);

            default:
                co = new ConnectionOptions
                {
                    Authentication   = AuthenticationLevel.Packet,
                    Timeout          = new TimeSpan(0, 0, 30),
                    EnablePrivileges = true,
                };
                break;
            }
            if (wps != null && !string.IsNullOrWhiteSpace(wps.AuthUser) && !string.IsNullOrWhiteSpace(wps.AuthPassword))
            {
                co.Username = wps.AuthUser;
                co.Password = wps.AuthPassword;
            }
            if (wps != null && wps.QueryTimeout != default(int))
            {
                co.Timeout = new TimeSpan(0, 0, wps.QueryTimeout);
            }
            return(co);
        }
Esempio n. 2
0
 public static ManagementScope GetManagementScope(string machineName, WMIPollingSettings wps)
 {
     if (!ManagementScopes.ContainsKey(machineName.ToLower()))
     {
         var newScope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", machineName), GetConnectOptions(machineName, wps));
         ManagementScopes.TryAdd(machineName.ToLower(), newScope);
     }
     return(ManagementScopes[machineName.ToLower()]);
 }
Esempio n. 3
0
        public static QueryResult <T> Query <T>(string machineName, WMIPollingSettings wps, string query, Func <IEnumerable <ManagementObject>, IEnumerable <T> > conversion)
        {
            var timer    = Stopwatch.StartNew();
            var scope    = GetManagementScope(machineName, wps);
            var searcher = GetManagementObjectSearcher(machineName, query, scope);

            using (var results = searcher.Get())
            {
                var queryResults = results.Cast <ManagementObject>();
                timer.Stop();
                return(new QueryResult <T>
                {
                    Duration = timer.Elapsed,
                    Data = conversion(queryResults).ToList()
                });
            }
        }