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));
        }
示例#2
0
        /// <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);
        }