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>()); }
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(); } }