public string ReadProcessList() { List <string[]> runningProcesses = new List <string[]>(); string[] outputHeader = { "Process", "PID", "User", "CPU Time", "Memory", "Handles", "Threads", "Command Line" }; runningProcesses.Add(outputHeader); foreach (Process p in Process.GetProcesses()) { try { var pi = new ProcessInfo(p); runningProcesses.Add(pi.ToStringArray()); p.Dispose(); } catch (Exception) { } } return(DotNetHelper.GetInstance().PadListElements(runningProcesses, 1)); }
/// <summary> /// Gets a formatted list of WMI data, including property names, for the specified WMI class. /// </summary> /// <param name="namespaceName">The WMI namespace which contains the class, e.g. root\\cimv2.</param> /// <param name="wmiClassName">The WMI class for obtaining the properties list.</param> /// <param name="columns">The list of columns to retrieve, the default is null/* for all columns.</param> /// <param name="columnPadding">Padding (number of spaces) to add between columns of data in the return string.</param> /// <returns></returns> public string GetFormattedWMIData( string namespaceName, string wmiClassName, List <string> columns = null, int columnPadding = 1) { var output = new List <string[]>(); try { ManagementPath managementPath = new ManagementPath(); managementPath.Path = namespaceName; ManagementScope managementScope = new ManagementScope(managementPath); ObjectQuery objectQuery = new ObjectQuery($"SELECT * FROM {wmiClassName}"); if (columns == null || columns[0].Equals("*")) { objectQuery = new ObjectQuery($"SELECT * FROM {wmiClassName}"); } else { objectQuery = new ObjectQuery($"SELECT {string.Join(",", columns)} FROM {wmiClassName}"); } ManagementObjectSearcher searcher = new ManagementObjectSearcher(managementScope, objectQuery); ManagementObjectCollection objectCollection = searcher.Get(); foreach (ManagementObject obj in objectCollection) { var row = new List <string>(); PropertyDataCollection props = obj.Properties; if (output.Count == 0) { var columnNames = new List <string>(); foreach (PropertyData p in props) { columnNames.Add(p.Name); } output.Add(columnNames.ToArray()); } foreach (PropertyData p in props) { if (p.Value == null || string.IsNullOrWhiteSpace(p.Value.ToString())) { row.Add(""); } else { row.Add(p.Value.ToString()); } } output.Add(row.ToArray()); } } catch (Exception e) { _logger.Log(e, $"Failed to query data from '{namespaceName}\\{wmiClassName}'."); } return(DotNetHelper.GetInstance().PadListElements(output, columnPadding)); }
public string ListFolderContents(string folderPath) { List <string[]> foldersAndFiles = new List <string[]>(); try { if (!Directory.Exists(folderPath)) { return("Specified folder was not found [" + folderPath + "]."); } foldersAndFiles.Add(new string[] { "Folder(s)", "" }); foldersAndFiles.Add(new string[] { "---------", "" }); foreach (string folder in Directory.GetDirectories(folderPath.Trim('\"'))) { try { foldersAndFiles.Add(new string[] { folder.Substring(folder.LastIndexOf("\\") + 1), BytesToReadableValue(SizeOfFileOrFolder(folder)) }); } catch (Exception) { foldersAndFiles.Add(new string[] { folder.Substring(folder.LastIndexOf("\\") + 1), "<Size unavailable>" }); } } foldersAndFiles.Add(new string[] { "", "" }); foldersAndFiles.Add(new string[] { "File(s)", "" }); foldersAndFiles.Add(new string[] { "-------", "" }); foreach (string file in Directory.GetFiles(folderPath)) { try { foldersAndFiles.Add(new string[] { Path.GetFileName(file), BytesToReadableValue(SizeOfFileOrFolder(file)) }); } catch (Exception) { foldersAndFiles.Add(new string[] { Path.GetFileName(file), "<Size unavailable>" }); } } } catch (Exception e) { _logger.Log(e, "Failed to iterate file(s) or folder(s) for [" + folderPath + "]."); } string paddedTable = ""; try { paddedTable = DotNetHelper.GetInstance().PadListElements(foldersAndFiles, 5); } catch (Exception e) { _logger.Log(e, "Failed to construct padded elements list."); string returnString = ""; foreach (string[] s in foldersAndFiles) { string unPaddedLine = string.Join(" ", s); returnString += unPaddedLine + Environment.NewLine; } return(returnString); } return(paddedTable); }