diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs index 4401c15..a5d72d3 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs @@ -59,49 +59,59 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS var config = (parameter as Menu.ExecutorParameter).GetConfig(); while (true) { - ColorConsole.Write($"Enter servicename mask (% and ? are wildchars)!", ConsoleColor.Yellow); + ColorConsole.WriteLine($"Enter servicename mask to select from the result list (% and ? are wildchars)...", ConsoleColor.Yellow); + ColorConsole.WriteLine($"...or enter service name directly (put an asterisk (*) before the name).", ConsoleColor.Yellow); var mask = ColorConsole.ReadLine($" ---> ", ConsoleColor.Yellow).ToUpper(); if (mask == "EX") { return o; } else if (mask == "") { continue; } - var sl = WindowsServiceManagerCore.GetServiceControllers(mask); - if (sl.Length > 10) { sl = sl.Take(10).ToArray(); } - - var menuservices = new Menu("Windows services", "Select the windows service(es) to delete (max 10 in one run)!") - .SetSelectionMode(Menu.SelectionMode.Multi); - - for (var i = 0; i < sl.Length; i++) - { - menuservices.AddMenuItem(new Menu.Item(null, $"{sl[i].ServiceName} ({sl[i].DisplayName})", null, new Menu.ExecutorParameter(pars:sl[i].ServiceName))); - } - menuservices.DisplayItems(1); - var ms = menuservices.Select(); - if (ms.Result == Menu.SelectionResult.None) { continue; } - else if (ms.Result == Menu.SelectionResult.Error) { continue; } - else if (ms.Result == Menu.SelectionResult.Exit) { break; } + + if (mask.StartsWith("*") && mask.Length>=2) { DeleteOneService(mask.Substring(1)); } else { - foreach (var p in ms.SelectedParameterList) + var sl = WindowsServiceManagerCore.GetServiceControllers(mask); + if (sl.Length > 10) { sl = sl.Take(10).ToArray(); } + + var menuservices = new Menu("Windows services", "Select the windows service(es) to delete (max 10 in one run)!") + .SetSelectionMode(Menu.SelectionMode.Multi); + + for (var i = 0; i < sl.Length; i++) { - ColorConsole.Write($"Enter CONFIRM to delete service ", ConsoleColor.Yellow); - ColorConsole.Write($"{p}", ConsoleColor.White, bracket: "''"); - ColorConsole.Write($"!", ConsoleColor.Yellow); - var confirmation = ColorConsole.ReadLine(prefix: " ---> ").ToUpper(); - if (confirmation == "EX") { return o; } - else if (confirmation == "") - { - ColorConsole.WriteLine($"Service '{p}' skipped!", ConsoleColor.Green); - continue; - } - else if (confirmation == "CONFIRM") + menuservices.AddMenuItem(new Menu.Item(null, $"{sl[i].ServiceName} ({sl[i].DisplayName})", null, new Menu.ExecutorParameter(pars: sl[i].ServiceName))); + } + menuservices.DisplayItems(1); + var ms = menuservices.Select(); + if (ms.Result == Menu.SelectionResult.None) { continue; } + else if (ms.Result == Menu.SelectionResult.Error) { continue; } + else if (ms.Result == Menu.SelectionResult.Exit) { break; } + else + { + foreach (var p in ms.SelectedParameterList) { - WindowsServiceManagerCore.Unregister((string)(p.Parameters)); - ColorConsole.WriteLine($"Service '{p}' deleted!", ConsoleColor.Green); + if (DeleteOneService((string)(p.Parameters))) { return o; } } } } } return o; } + private static bool DeleteOneService(string servicename) + { + ColorConsole.Write($"Enter CONFIRM to delete service ", ConsoleColor.Yellow); + ColorConsole.Write(servicename, ConsoleColor.White, bracket: "''"); + ColorConsole.Write($"!", ConsoleColor.Yellow); + var confirmation = ColorConsole.ReadLine(prefix: " ---> ").ToUpper(); + if (confirmation == "EX") { return true; } + else if (confirmation == "") + { + ColorConsole.WriteLine($"Service '{servicename}' NOT deleted!", ConsoleColor.Green); + } + else if (confirmation == "CONFIRM") + { + WindowsServiceManagerCore.Unregister(servicename); + ColorConsole.WriteLine($"Service '{servicename}' deleted!", ConsoleColor.Green); + } + return false; + } private static object Kill(object parameter, object o) { var config = (parameter as Menu.ExecutorParameter).GetConfig(); -- libgit2 0.21.2