Exemple #1
0
        internal static object Execute(Command command, string parameter)
        {
            try
            {
                switch (command)
                {
                case Command.ReloadConfiguration:
                    ConfigManager.GetInstance().ReloadConfiguration();
                    return(null);

                case Command.SetSelectedServer:
                    ConfigManager.GetInstance().SelectedProvider = ConfigManager.GetInstance().GetProviderByName(parameter);
                    break;

                case Command.SetNewNamespace:
                    ConfigManager.GetInstance().WMINamespace = parameter;
                    break;

                case Command.SetSelectedClass:
                    ConfigManager.GetInstance().WMIClassName = parameter;
                    break;

                case Command.SetSelectedInstance:
                    ConfigManager.GetInstance().WMIInstanceName = parameter;
                    break;

                case Command.SetNewPropertiesFilter:
                    var tmp       = parameter.Split(',');
                    var propsList = tmp.Select(res => res.Trim()).ToList();
                    ConfigManager.GetInstance().WMIFilterProperties = propsList;
                    break;

                case Command.SetNewKeyProperty:
                    ConfigManager.GetInstance().WMIKeyProperty = parameter;
                    break;

                case Command.GetPropertiesFilter:
                    return(ConfigManager.GetInstance().WMIFilterProperties);

                case Command.GetWMINamespace:
                    return(ConfigManager.GetInstance().WMINamespace);

                case Command.GetWMIInstancesOfClass:
                    return(WMIWrapper.GetInstance().GetWMIInstances());

                case Command.GetWMIInstanceAsXML:
                    return(WMIWrapper.GetInstance().GetWMIInstanceAsXML());

                case Command.GetWMIKeyProperty:
                    return(ConfigManager.GetInstance().WMIKeyProperty);

                case Command.GetWMIPropertiesOfInstance:
                    return(WMIWrapper.GetInstance().GetWMIPropertiesOfInstance());

                case Command.GetWMIMethodsOfInstance:
                    return(WMIWrapper.GetInstance().GetWMIMethodsOfInstance());

                case Command.GetWMIClasses:
                    return(WMIWrapper.GetInstance().GetWMIClassesInNamespace());

                default:
                    MessageBox.Show("Unknown command", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
                    return(new List <string>());
                }
            }
            catch (ConfigException cex)
            {
                MessageBox.Show(
                    "Configuration error. Fix '" + ConfigManager.DefaultProvidersFileName + "' file and reload it: " +
                    cex.Message, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            return(new List <string>());
        }
Exemple #2
0
        private void AppOnStartUp(object sender, StartupEventArgs e)
        {
            // Processing arguments
            foreach (var arg in e.Args)
            {
                var pName  = arg;
                var pValue = string.Empty;
                if (arg.Contains(ValueSplitter.ToString(CultureInfo.InvariantCulture)))
                {
                    var tmp = arg.Split(ValueSplitter);

                    pName  = tmp[0];
                    pValue = tmp[1];
                }

                var cp = FindConsoleParameter(pName);
                if (cp != null)
                {
                    cp.Value = pValue;
                    cp.Handler(this, cp);
                }
            }

            ConfigManager.GetInstance().WMIOutputFormatType = OutFormatType;

            if (StartUi == OutPutSelection.Gui)
            {
                StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
            }
            else
            {
                const string srvPrefix = "Server: ";
                // const string instPrefix = "\tInstance: ";
                const string itemPrefix = ""; //  "\t\t";

                Logging logTo = new LoggingToConsole();
                switch (StartUi)
                {
                case OutPutSelection.Console:
                    AttachConsole(AttachParentProcess);
                    break;

                case OutPutSelection.Database:
                    AttachConsole(AttachParentProcess);
                    logTo = new LoggingToClass(LogToMethodValue);
                    if (!logTo.Initialized)
                    {
                        Console.WriteLine(logTo.ErrorMessage);
                        Current.Shutdown();
                    }
                    break;
                }

                var wmiServers = ConfigManager.GetInstance().ProviderNames;
                foreach (var wmiServer in wmiServers)
                {
                    ConfigManager.GetInstance().SelectedProvider = ConfigManager.GetInstance().GetProviderByName(wmiServer);
                    var wmiInstanceNames = WMIWrapper.GetInstance().GetWMIInstances();

                    if (StartUi != OutPutSelection.Database)
                    {
                        var filterProperties = ConfigManager.GetInstance().WMIFilterProperties;
                        if (filterProperties.Any(fp => fp == ConfigManager.AllWMIProperties))
                        {
                            filterProperties = WMIWrapper.GetInstance().GetAllWMIPropertyNamesOfInstance();
                        }

                        logTo.Log(srvPrefix + wmiServer);
                        logTo.Log(String.Join(WMIWrapper.CSVSeparator.ToString(CultureInfo.InvariantCulture), filterProperties));
                    }

                    foreach (var wmiInstanceName in wmiInstanceNames)
                    {
                        // Console.WriteLine(instPrefix + instance);
                        ConfigManager.GetInstance().WMIInstanceName = wmiInstanceName;

                        if (StartUi != OutPutSelection.Database)
                        {
                            var detail = WMIWrapper.GetInstance().GetWMIPropertiesOfInstance(OutFormatType);
                            foreach (var item in detail)
                            {
                                logTo.Log(itemPrefix + item);
                            }
                        }
                        else
                        {
                            object[] objects = WMIWrapper.GetInstance().GetWMIPropertiesOfInstanceAsObjectArray();
                            var      ok      = logTo.Log(objects);
                            if (!ok)
                            {
                                Console.WriteLine(logTo.ErrorMessage);
                            }
                        }

                        if (ConfigManager.GetInstance().ExecuteWMIMethod)
                        {
                            var wmiMethodsOfInstance = WMIWrapper.GetInstance().GetWMIMethodsOfInstance();
                            var methodsToExecute     = ConfigManager.GetInstance().WMIMethodsToExecute.Split(WMIWrapper.CSVSeparator);

                            foreach (var methodToExecute in methodsToExecute)
                            {
                                var executed = false;
                                var name     = methodToExecute.Trim();
                                foreach (var method in wmiMethodsOfInstance.Where(method => method.CanBeExecuted() && (method.Method.Name == name)))
                                {
                                    if (executed)
                                    {
                                        continue;
                                    }

                                    try
                                    {
                                        method.Execute();
                                        executed = true;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine(@"Error: " + ex.Message);
                                    }
                                }

                                if (!executed)
                                {
                                    Console.WriteLine(@"Error: Method '" + name + @"' couldn't be executed. Wrong name? Static methods aren't also supported yet.");
                                }
                            }
                        }
                    }
                }

                Current.Shutdown();
            }
        }