processes() fix command line parsing (win) wip

This commit is contained in:
Sebastian Hildebrandt 2025-12-27 17:37:18 +01:00
parent f6acf2e30e
commit 22d2b355d5

View File

@ -1128,69 +1128,70 @@ function processLoad(proc, callback) {
if (procSanitized && processes.length && processes[0] !== '------') { if (procSanitized && processes.length && processes[0] !== '------') {
if (_windows) { if (_windows) {
try { try {
util.powerShell('Get-CimInstance Win32_Process | select ProcessId,Caption,UserModeTime,KernelModeTime,WorkingSetSize | fl').then((stdout, error) => { util.powerShell('Get-CimInstance Win32_Process | select ProcessId,Caption,UserModeTime,KernelModeTime,WorkingSetSize | ConvertTo-Json -compress').then((stdout, error) => {
if (!error) { if (!error) {
let processSections = stdout.split(/\n\s*\n/); const procStats = [];
let procStats = []; const list_new = {};
let list_new = {};
let allcpuu = 0; let allcpuu = 0;
let allcpus = 0; let allcpus = 0;
let processArray = [];
try {
stdout = stdout.trim().replace(/^\uFEFF/, '');
processArray = JSON.parse(stdout);
} catch {}
// go through all processes // go through all processes
processSections.forEach((element) => { processArray.forEach((element) => {
if (element.trim() !== '') { const pid = element.ProcessId;
let lines = element.trim().split('\r\n'); const name = element.Caption;
let pid = parseInt(util.getValue(lines, 'ProcessId', ':', true), 10); const utime = element.UserModeTime;
let name = util.getValue(lines, 'Caption', ':', true); const stime = element.KernelModeTime;
let utime = parseInt(util.getValue(lines, 'UserModeTime', ':', true), 10); const mem = element.WorkingSetSize;
let stime = parseInt(util.getValue(lines, 'KernelModeTime', ':', true), 10); allcpuu = allcpuu + utime;
let mem = parseInt(util.getValue(lines, 'WorkingSetSize', ':', true), 10); allcpus = allcpus + stime;
allcpuu = allcpuu + utime;
allcpus = allcpus + stime;
procStats.push({ procStats.push({
pid: pid, pid: pid,
name, name,
utime: utime, utime: utime,
stime: stime, stime: stime,
cpu: 0, cpu: 0,
cpuu: 0, cpuu: 0,
cpus: 0, cpus: 0,
mem mem
}); });
let pname = ''; let pname = '';
let inList = false; let inList = false;
processes.forEach((proc) => { processes.forEach((proc) => {
if (name.toLowerCase().indexOf(proc.toLowerCase()) >= 0 && !inList) { if (name.toLowerCase().indexOf(proc.toLowerCase()) >= 0 && !inList) {
inList = true; inList = true;
pname = proc; pname = proc;
}
});
if (processesString === '*' || inList) {
let processFound = false;
result.forEach((item) => {
if (item.proc.toLowerCase() === pname.toLowerCase()) {
item.pids.push(pid);
item.mem += (mem / os.totalmem()) * 100;
processFound = true;
} }
}); });
if (!processFound) {
if (processesString === '*' || inList) { result.push({
let processFound = false; proc: pname,
result.forEach((item) => { pid: pid,
if (item.proc.toLowerCase() === pname.toLowerCase()) { pids: [pid],
item.pids.push(pid); cpu: 0,
item.mem += (mem / os.totalmem()) * 100; mem: (mem / os.totalmem()) * 100
processFound = true;
}
}); });
if (!processFound) {
result.push({
proc: pname,
pid: pid,
pids: [pid],
cpu: 0,
mem: (mem / os.totalmem()) * 100
});
}
} }
} }
}); });
// add missing processes
if (processesString !== '*') { if (processesString !== '*') {
// add missing processes
let processesMissing = processes.filter((name) => procStats.filter((item) => item.name.toLowerCase().indexOf(name) >= 0).length === 0); let processesMissing = processes.filter((name) => procStats.filter((item) => item.name.toLowerCase().indexOf(name) >= 0).length === 0);
processesMissing.forEach((procName) => { processesMissing.forEach((procName) => {
result.push({ result.push({
@ -1239,7 +1240,7 @@ function processLoad(proc, callback) {
resolve(result); resolve(result);
} }
}); });
} catch (e) { } catch {
if (callback) { if (callback) {
callback(result); callback(result);
} }