Commit 22ea3e7ebaf982e9cf9ab1e61344906f92e51928
1 parent
2f5d8765
v1.4.0: database shrink function is implemented
Showing
7 changed files
with
145 additions
and
17 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs
@@ -281,6 +281,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS | @@ -281,6 +281,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS | ||
281 | public static class RestoreDataBase { public const string KEY = "RES"; public const string CMD_RESTOREFIRST = "-RESTOREFIRST"; | 281 | public static class RestoreDataBase { public const string KEY = "RES"; public const string CMD_RESTOREFIRST = "-RESTOREFIRST"; |
282 | } | 282 | } |
283 | public static class RelocatePhysicalFiles { public const string KEY = "COP"; } | 283 | public static class RelocatePhysicalFiles { public const string KEY = "COP"; } |
284 | + public static class ShrinkDB { public const string KEY = "SHR"; } | ||
284 | } | 285 | } |
285 | } | 286 | } |
286 | 287 |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
@@ -210,27 +210,46 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | @@ -210,27 +210,46 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | ||
210 | Process.Start(startinfo); | 210 | Process.Start(startinfo); |
211 | } | 211 | } |
212 | public enum ShutDownMode { Sleep, Hibernation,Lock,Logoff,Restart,ShutDown,} | 212 | public enum ShutDownMode { Sleep, Hibernation,Lock,Logoff,Restart,ShutDown,} |
213 | - public static string HKLM_GetString(string path, string key) | 213 | + private static string HKLM_GetString(string path, string key) |
214 | { | 214 | { |
215 | try | 215 | try |
216 | { | 216 | { |
217 | - RegistryKey rk = Registry.LocalMachine.OpenSubKey(path); | ||
218 | - if (rk == null) { return ""; } | 217 | + Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(path); |
218 | + if (rk == null) return ""; | ||
219 | return (string)rk.GetValue(key); | 219 | return (string)rk.GetValue(key); |
220 | } | 220 | } |
221 | - catch { return ""; } | 221 | + catch { return null; } |
222 | } | 222 | } |
223 | 223 | ||
224 | - public static string OSFriendlyName() | 224 | + public static string GetOSFriendlyNameA() |
225 | { | 225 | { |
226 | string ProductName = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName"); | 226 | string ProductName = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName"); |
227 | string CSDVersion = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion"); | 227 | string CSDVersion = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion"); |
228 | - if (ProductName != "") | 228 | + if (!string.IsNullOrWhiteSpace(ProductName)) |
229 | { | 229 | { |
230 | - return (ProductName.StartsWith("Microsoft") ? "" : "Microsoft ") + ProductName + | ||
231 | - (CSDVersion != "" ? " " + CSDVersion : ""); | 230 | + return (ProductName.StartsWith("Microsoft") ? "" : "Microsoft ") + ProductName + (CSDVersion != "" ? " " + CSDVersion : ""); |
232 | } | 231 | } |
233 | - return ""; | 232 | + return null; |
233 | + } | ||
234 | + | ||
235 | + public static string GetOSFriendlyNameB() | ||
236 | + { | ||
237 | + string result = string.Empty; | ||
238 | + ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem"); | ||
239 | + foreach (ManagementObject os in searcher.Get()) { result = os["Caption"].ToString(); break; } | ||
240 | + return string.IsNullOrWhiteSpace(result)? null : result; | ||
241 | + } | ||
242 | + public static string GetOSFriendlyNameC() | ||
243 | + { | ||
244 | + return new Microsoft.VisualBasic.Devices.ComputerInfo().OSFullName; | ||
245 | + } | ||
246 | + public static string GetOSType() | ||
247 | + { | ||
248 | + string os = null; | ||
249 | + IEnumerable<string> list64 = System.IO.Directory.GetDirectories(Environment.GetEnvironmentVariable("SystemRoot")).Where(s => s.Equals(@"C:\Windows\SysWOW64")); | ||
250 | + IEnumerable<string> list32 = System.IO.Directory.GetDirectories(Environment.GetEnvironmentVariable("SystemRoot")).Where(s => s.Equals(@"C:\Windows\System32")); | ||
251 | + if (list32.Count() > 0) { if (list64.Count() > 0) { os = "64bit"; } else { os = "32bit"; } } | ||
252 | + return os; | ||
234 | } | 253 | } |
235 | } | 254 | } |
236 | 255 |
Vrh.Log4Pro.MaintenanceConsole/Manager - InstallManager.cs
@@ -111,12 +111,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | @@ -111,12 +111,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | ||
111 | } | 111 | } |
112 | public static InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values? GetOsCode() | 112 | public static InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values? GetOsCode() |
113 | { | 113 | { |
114 | - string osfrn = Tools.OSFriendlyName(); | 114 | + string osfrn = Tools.GetOSFriendlyNameB(); |
115 | var defaultvalue = | 115 | var defaultvalue = |
116 | osfrn.StartsWith("Microsoft Windows 10") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | 116 | osfrn.StartsWith("Microsoft Windows 10") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() |
117 | : osfrn.StartsWith("Microsoft Windows Server 2016") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | 117 | : osfrn.StartsWith("Microsoft Windows Server 2016") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() |
118 | : osfrn.StartsWith("Microsoft Windows Server 2012") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | 118 | : osfrn.StartsWith("Microsoft Windows Server 2012") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() |
119 | - : null; | 119 | + : ""; |
120 | var oslist = Enum.GetNames(typeof(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values)).ToList(); | 120 | var oslist = Enum.GetNames(typeof(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values)).ToList(); |
121 | string answer = ColorConsole.ReadLine($"Enter os code (friendly name is: '{osfrn}')!", ConsoleColor.Green, validitylist: oslist, defaultvalue: defaultvalue.ToString(), required: true); | 121 | string answer = ColorConsole.ReadLine($"Enter os code (friendly name is: '{osfrn}')!", ConsoleColor.Green, validitylist: oslist, defaultvalue: defaultvalue.ToString(), required: true); |
122 | if (answer.ToLower() == "ex") { return null; } | 122 | if (answer.ToLower() == "ex") { return null; } |
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -48,6 +48,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -48,6 +48,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
48 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.CreateDataScripts.KEY, "Create data scripts", CreateDataScripts, ep)) | 48 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.CreateDataScripts.KEY, "Create data scripts", CreateDataScripts, ep)) |
49 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.RestoreDataBase.KEY, "Restore database backup", RestoreDataBase, ep)) | 49 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.RestoreDataBase.KEY, "Restore database backup", RestoreDataBase, ep)) |
50 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.RelocatePhysicalFiles.KEY, "Copy database and or relocate its physical files", RelocatePhysicalFiles, ep)) | 50 | .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.RelocatePhysicalFiles.KEY, "Copy database and or relocate its physical files", RelocatePhysicalFiles, ep)) |
51 | + .AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.Function.ShrinkDB.KEY, "Shrink database", ShrinkDB, ep)) | ||
51 | .SetSelectionMode(Menu.SelectionMode.Single) | 52 | .SetSelectionMode(Menu.SelectionMode.Single) |
52 | .SetMenuHeaderDisplayer(DataBaseListDisplayer); | 53 | .SetMenuHeaderDisplayer(DataBaseListDisplayer); |
53 | menufunctions.ExecuteMenu(functionkey); | 54 | menufunctions.ExecuteMenu(functionkey); |
@@ -214,6 +215,49 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -214,6 +215,49 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
214 | } | 215 | } |
215 | return o; | 216 | return o; |
216 | } | 217 | } |
218 | + private static object ShrinkDB(object parameter, object o) | ||
219 | + { | ||
220 | + var config = (parameter as Menu.ExecutorParameter).GetConfig<SQLDataBaseManagerXmlProcessor>(); | ||
221 | + var args = (parameter as Menu.ExecutorParameter).Args; | ||
222 | + | ||
223 | + var selectedtaskindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.ScheduledTaskManager.Function.CMD_TASKS); | ||
224 | + | ||
225 | + var menufolders = DisplaySQLDataBaseMenu(config, $"Select the SQL database(s) to manage with function '{nameof(ShrinkDB)}'!", silent: true); | ||
226 | + | ||
227 | + Menu.Selection sr = menufolders.Select(selectedtaskindexes); | ||
228 | + if (sr.Result == Menu.SelectionResult.Exit) { return o; } | ||
229 | + else if (sr.Result == Menu.SelectionResult.None) { return o; } | ||
230 | + else if (sr.Result == Menu.SelectionResult.Error) { return o; } | ||
231 | + else if (sr.Result == Menu.SelectionResult.Ok) { } | ||
232 | + else { } | ||
233 | + foreach (var p in sr.SelectedParameterList) | ||
234 | + { | ||
235 | + SQLDataBase sqld = p.Parameters as SQLDataBase; | ||
236 | + try | ||
237 | + { | ||
238 | + ColorConsole.WriteLine(prefix: $"Enter the shrink options. Format:", bracket:"()", text:"OPTION,FreeSpacePercent:", f:ConsoleColor.Yellow); | ||
239 | + ColorConsole.WriteLine(prefix:" ", text:"Default", bracket: "[]", suffix: $": (default) compacts the data and removes free space from the DB. Use togethere with FreeSpacePercent.", f:ConsoleColor.Yellow); | ||
240 | + ColorConsole.WriteLine(prefix: " ", text: "NoTruncate",bracket:"[]", suffix: $": compacts the data, but does not remove free space from the DB. FreeSpacePercent is not applicable.", f: ConsoleColor.Yellow); | ||
241 | + ColorConsole.WriteLine(prefix: " ", text: "TruncateOnly", bracket: "[]", suffix: $": does not compact the data, but removes free space from the DB. Use togethere with FreeSpacePercent.", f: ConsoleColor.Yellow); | ||
242 | + ColorConsole.WriteLine(prefix: " ", text: "FreeSpacePercent", bracket: "[]", suffix: $": an integer number between 0-100,default=10; indicates the percentage of free space in the shrinked DB.", f: ConsoleColor.Yellow); | ||
243 | + var shrinkoptions = ColorConsole.ReadLine($"EX=exit.", ConsoleColor.Yellow, suffix: " --> "); | ||
244 | + if (shrinkoptions == "EX") { continue; } | ||
245 | + else if (string.IsNullOrWhiteSpace(shrinkoptions)) { shrinkoptions = "Default,10"; } | ||
246 | + string option, fsp = null; | ||
247 | + int fspint = 10; | ||
248 | + option = shrinkoptions.Split(new char[] { ',' })[0]; | ||
249 | + if (shrinkoptions.IndexOf(',') >= 0) { fsp = shrinkoptions.Split(new char[] { ',' })[1]; } | ||
250 | + if (string.IsNullOrWhiteSpace(option) || !"Default,NoTruncate,TruncateOnly".Contains(option)) { option = "Default"; } | ||
251 | + var shrinkmethod = (ShrinkMethod)Enum.Parse(typeof(ShrinkMethod), option); | ||
252 | + if (string.IsNullOrWhiteSpace(fsp) || !int.TryParse(fsp, out fspint)) { fspint = 10; } | ||
253 | + | ||
254 | + SQLDataBaseManagerCore.ShrinkDB(sqld.SQLCS, shrinkmethod, fspint); | ||
255 | + ColorConsole.WriteLine($"Database shrinked. Name:{sqld.DBName}", ConsoleColor.Green); | ||
256 | + } | ||
257 | + catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); } | ||
258 | + } | ||
259 | + return o; | ||
260 | + } | ||
217 | private static object RelocatePhysicalFiles(object parameter, object o) | 261 | private static object RelocatePhysicalFiles(object parameter, object o) |
218 | { | 262 | { |
219 | var config = (parameter as Menu.ExecutorParameter).GetConfig<SQLDataBaseManagerXmlProcessor>(); | 263 | var config = (parameter as Menu.ExecutorParameter).GetConfig<SQLDataBaseManagerXmlProcessor>(); |
@@ -312,6 +356,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -312,6 +356,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
312 | ColorConsole.WriteLine(" "); | 356 | ColorConsole.WriteLine(" "); |
313 | return " "; | 357 | return " "; |
314 | } | 358 | } |
359 | + else if (lineix == 4) | ||
360 | + { | ||
361 | + var dbsize = SQLDataBaseManagerCore.GetSize(st.SQLCS); | ||
362 | + ColorConsole.Write(dbsize, ConsoleColor.Yellow, prefix: "DB size:", suffix: " "); | ||
363 | + ColorConsole.WriteLine(" "); | ||
364 | + return " "; | ||
365 | + } | ||
315 | return null; | 366 | return null; |
316 | } | 367 | } |
317 | #endregion private method: DisplayDataBaseInfo | 368 | #endregion private method: DisplayDataBaseInfo |
@@ -329,6 +380,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -329,6 +380,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
329 | sqld.PhysicalFilesDirectoryPath = GetPhysicalFilesLocation(sqld.SQLCS); | 380 | sqld.PhysicalFilesDirectoryPath = GetPhysicalFilesLocation(sqld.SQLCS); |
330 | sqld.DBName = GetDBName(sqld.SQLCS); | 381 | sqld.DBName = GetDBName(sqld.SQLCS); |
331 | sqld.DataSource = GetDataSource(sqld.SQLCS); | 382 | sqld.DataSource = GetDataSource(sqld.SQLCS); |
383 | + sqld.SizeString = GetSize(sqld.SQLCS); | ||
332 | return sqld; | 384 | return sqld; |
333 | } | 385 | } |
334 | #endregion public CollectDataBaseInfo | 386 | #endregion public CollectDataBaseInfo |
@@ -539,6 +591,47 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -539,6 +591,47 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
539 | } | 591 | } |
540 | catch (Exception ex) { throw ex; } | 592 | catch (Exception ex) { throw ex; } |
541 | } | 593 | } |
594 | + | ||
595 | + public static void ShrinkDB(string sqlconnectionstring, ShrinkMethod shrinkmethod,int freespacepercent) | ||
596 | + { | ||
597 | + var sqlc = new Microsoft.Data.SqlClient.SqlConnection(sqlconnectionstring); | ||
598 | + var sc = new ServerConnection(sqlc); | ||
599 | + var srvr = new Server(sc); | ||
600 | + var db = new Database(srvr, GetDBName(sqlconnectionstring)); | ||
601 | + db.Shrink(freespacepercent, shrinkmethod); | ||
602 | + } | ||
603 | + | ||
604 | + #region GetSize | ||
605 | + /// <summary> | ||
606 | + /// Visszadja a megadott adatbázis méretét | ||
607 | + /// </summary> | ||
608 | + /// <param name="sqlconnectionstring"></param> | ||
609 | + /// <returns></returns> | ||
610 | + public static string GetSize(string sqlconnectionstring) | ||
611 | + { | ||
612 | + var sqlc = new Microsoft.Data.SqlClient.SqlConnection(sqlconnectionstring); | ||
613 | + var dbname = GetDBName(sqlconnectionstring); | ||
614 | + | ||
615 | + var getsizecmd = new Microsoft.Data.SqlClient.SqlCommand ("sp_spaceused", sqlc); | ||
616 | + getsizecmd.CommandType = System.Data.CommandType.StoredProcedure; | ||
617 | + sqlc.Open(); | ||
618 | + var reader = getsizecmd.ExecuteReader(); | ||
619 | + | ||
620 | + if (reader.HasRows) | ||
621 | + { | ||
622 | + while (reader.Read()) | ||
623 | + { | ||
624 | + var dbn = reader["database_name"]; | ||
625 | + var dbs = reader["database_size"]; | ||
626 | + if (Convert.ToString(dbn) == dbname) { return Convert.ToString(dbs); }; | ||
627 | + } | ||
628 | + } | ||
629 | + sqlc.Close(); | ||
630 | + sqlc.Dispose(); | ||
631 | + return "N/A"; | ||
632 | + } | ||
633 | + #endregion GetSize | ||
634 | + | ||
542 | #region GetPhysicalFilesLocation | 635 | #region GetPhysicalFilesLocation |
543 | /// <summary> | 636 | /// <summary> |
544 | /// Returns the physical path to the directory that holds the files of the database | 637 | /// Returns the physical path to the directory that holds the files of the database |
@@ -564,7 +657,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -564,7 +657,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
564 | #region DBSubstitution | 657 | #region DBSubstitution |
565 | public enum DBSubstitutionName | 658 | public enum DBSubstitutionName |
566 | { | 659 | { |
567 | - DATABASE,DATASOURCE,DBOTYPE,DBONAME,DBDATAGROUP,BACKUPTS, | 660 | + DATABASE,DATASOURCE,DBOTYPE,DBONAME,DBDATAGROUP,BACKUPTS,SHRINKOPTION,SHRINKFREESPACEPERCENT, |
568 | } | 661 | } |
569 | #endregion DBSubstitution | 662 | #endregion DBSubstitution |
570 | #region ExecuteSQLScript | 663 | #region ExecuteSQLScript |
@@ -615,6 +708,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -615,6 +708,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
615 | SQLBatchTxt += scriptline + "\r\n"; | 708 | SQLBatchTxt += scriptline + "\r\n"; |
616 | } | 709 | } |
617 | } | 710 | } |
711 | + | ||
618 | sqlc.Close(); | 712 | sqlc.Close(); |
619 | if (DataSet != null && DataSet.Tables != null) | 713 | if (DataSet != null && DataSet.Tables != null) |
620 | { | 714 | { |
@@ -628,6 +722,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -628,6 +722,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
628 | } | 722 | } |
629 | else { return new ReturnInfoJSON() { ReturnValue = 0, ReturnMessage = null, }; } | 723 | else { return new ReturnInfoJSON() { ReturnValue = 0, ReturnMessage = null, }; } |
630 | } | 724 | } |
725 | + | ||
726 | + | ||
727 | + | ||
728 | + | ||
729 | + | ||
730 | + | ||
631 | private static System.Data.DataSet ExecuteSQLScriptBatch(Microsoft.Data.SqlClient.SqlConnection sqlc, string sqlbatchtxt, int commandtimeout) | 731 | private static System.Data.DataSet ExecuteSQLScriptBatch(Microsoft.Data.SqlClient.SqlConnection sqlc, string sqlbatchtxt, int commandtimeout) |
632 | { | 732 | { |
633 | var sqlcommand = sqlc.CreateCommand(); | 733 | var sqlcommand = sqlc.CreateCommand(); |
@@ -1005,6 +1105,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -1005,6 +1105,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
1005 | public string DataSource; | 1105 | public string DataSource; |
1006 | public SQLDataBaseManagerCore.SQLDBStatus Status; | 1106 | public SQLDataBaseManagerCore.SQLDBStatus Status; |
1007 | public string PhysicalFilesDirectoryPath; | 1107 | public string PhysicalFilesDirectoryPath; |
1108 | + public string SizeString; | ||
1008 | public string SQLCS | 1109 | public string SQLCS |
1009 | { | 1110 | { |
1010 | get { return XmlProcessing.ConnectionStringStore.GetSQL(this.Xml_SQLConnectionString); } | 1111 | get { return XmlProcessing.ConnectionStringStore.GetSQL(this.Xml_SQLConnectionString); } |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
@@ -35,7 +35,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -35,7 +35,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
35 | { | 35 | { |
36 | static void Main(string[] args) | 36 | static void Main(string[] args) |
37 | { | 37 | { |
38 | - | ||
39 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); | 38 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); |
40 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); | 39 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); |
41 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); | 40 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); |
@@ -113,7 +112,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -113,7 +112,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
113 | 112 | ||
114 | // processor architecture | 113 | // processor architecture |
115 | ColorConsole.Write("Processors: "); | 114 | ColorConsole.Write("Processors: "); |
116 | - ColorConsole.Write(System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), ConsoleColor.Yellow, bracket: "[]", prefix: "Architecture: ",suffix:", "); | 115 | + ColorConsole.Write(System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), ConsoleColor.Yellow, bracket: "[]", prefix: "Architecture: "); |
116 | + ColorConsole.Write(Tools.GetOSType() ?? "N/A", ConsoleColor.Yellow, bracket: "[]", suffix: ", "); | ||
117 | foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) | 117 | foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) |
118 | { | 118 | { |
119 | ColorConsole.Write(item["NumberOfProcessors"].ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Physical:",suffix:", "); | 119 | ColorConsole.Write(item["NumberOfProcessors"].ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Physical:",suffix:", "); |
@@ -134,7 +134,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -134,7 +134,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
134 | ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); | 134 | ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); |
135 | ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); | 135 | ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); |
136 | ColorConsole.WriteLine(""); | 136 | ColorConsole.WriteLine(""); |
137 | - ColorConsole.Write(Tools.OSFriendlyName(), ConsoleColor.Yellow, bracket: "[]", prefix: " Friendly name:"); | 137 | + |
138 | + ColorConsole.Write("", ConsoleColor.Yellow, prefix: "OS Friendly name versions:"); | ||
139 | + string fnA = Tools.GetOSFriendlyNameA(); if (!string.IsNullOrWhiteSpace(fnA)) ColorConsole.Write(fnA, ConsoleColor.Yellow, bracket: "[]"); | ||
140 | + string fnB = Tools.GetOSFriendlyNameB(); if (!string.IsNullOrWhiteSpace(fnB) && fnB!=fnA) ColorConsole.Write(fnB, ConsoleColor.Yellow, bracket: "[]"); | ||
141 | + string fnC = Tools.GetOSFriendlyNameC(); if (!string.IsNullOrWhiteSpace(fnC) && fnC!=fnA && fnC!=fnB) ColorConsole.Write(fnC, ConsoleColor.Yellow, bracket: "[]"); | ||
142 | + if (string.IsNullOrWhiteSpace(fnA) && string.IsNullOrWhiteSpace(fnB) && string.IsNullOrWhiteSpace(fnC)) ColorConsole.Write("N/A", ConsoleColor.Yellow, bracket: "[]"); | ||
143 | + ColorConsole.WriteLine(""); | ||
138 | ColorConsole.WriteLine(""); | 144 | ColorConsole.WriteLine(""); |
139 | ColorConsole.WriteLine(""); | 145 | ColorConsole.WriteLine(""); |
140 | } | 146 | } |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
34 | // [assembly: AssemblyVersion("1.0.*")] | 34 | // [assembly: AssemblyVersion("1.0.*")] |
35 | -[assembly: AssemblyVersion("1.3.0.0")] | ||
36 | -[assembly: AssemblyFileVersion("1.3.0.0")] | 35 | +[assembly: AssemblyVersion("1.4.0.0")] |
36 | +[assembly: AssemblyFileVersion("1.4.0.0")] |
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
@@ -157,6 +157,7 @@ | @@ -157,6 +157,7 @@ | ||
157 | <Reference Include="Microsoft.SqlServer.WmiEnum, Version=16.200.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> | 157 | <Reference Include="Microsoft.SqlServer.WmiEnum, Version=16.200.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> |
158 | <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46041.41\lib\net462\Microsoft.SqlServer.WmiEnum.dll</HintPath> | 158 | <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46041.41\lib\net462\Microsoft.SqlServer.WmiEnum.dll</HintPath> |
159 | </Reference> | 159 | </Reference> |
160 | + <Reference Include="Microsoft.VisualBasic" /> | ||
160 | <Reference Include="Microsoft.Web.Administration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | 161 | <Reference Include="Microsoft.Web.Administration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
161 | <HintPath>..\packages\Microsoft.Web.Administration.11.1.0\lib\netstandard1.5\Microsoft.Web.Administration.dll</HintPath> | 162 | <HintPath>..\packages\Microsoft.Web.Administration.11.1.0\lib\netstandard1.5\Microsoft.Web.Administration.dll</HintPath> |
162 | </Reference> | 163 | </Reference> |