Как обойти ошибку The term '=' is not recognized as the name of a cmdlet?
Пытаюсь с помощью nodejs и powershell найти количество видимых окон для процесса FastExecuteScript.exe и завершить этот процесс, в случае если таких окон больше одного. Все действия записываются в лог-файл 1logggg.txt
Но постоянно вижу ошибку в лог файле: Скрипт запущен: 19.05.2024, 17:18:26 Проверка процессов FastExecuteScript.exe Общее количество процессов FastExecuteScript.exe: 1 Используем команду для получения кол-ва окон: $windows = Get-Process -Name 'FastExecuteScript' | ForEach-Object { $_.MainWindowTitle } | Where-Object { $_ -ne "" }; $windows.Count Ошибка: = : The term '=' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spell ing of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:2 + = Get-Process -Name 'FastExecuteScript' | ForEach-Object { .MainWind ... + ~ + CategoryInfo : ObjectNotFound: (=:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException .Count : The term '.Count' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:106 + ... ForEach-Object { .MainWindowTitle } | Where-Object { -ne }; .Count + ~~~~~~ + CategoryInfo : ObjectNotFound: (.Count:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Скрипт завершен: 19.05.2024, 17:18:34 Код: const { exec } = require('child_process'); const fs = require('fs'); const path = require('path'); // Лог-файл const logFile = path.join('C:\\Users\\Administrator\\Downloads', '1logggg.txt'); fs.writeFileSync(logFile, `Скрипт запущен: ${new Date().toLocaleString()}\n`); // Функция для записи в лог function log(message) { fs.appendFileSync(logFile, `${message}\n`); } // Функция для выполнения команд и получения результата function execCommand(command) { return new Promise((resolve, reject) => { exec(command, { shell: 'powershell.exe' }, (error, stdout, stderr) => { if (error) { reject(stderr.trim()); } else { resolve(stdout.trim()); } }); }); } // Функция для получения количества видимых окон для процесса async function getVisibleWindowsCount(processName) { const script = `$windows = Get-Process -Name '${processName}' | ForEach-Object { $_.MainWindowTitle } | Where-Object { $_ -ne "" }; $windows.Count`; log(`Используем команду для получения кол-ва окон: ${script}`); return execCommand(`powershell -command "${script}"`); } // Основная функция async function main() { try { log('Проверка процессов FastExecuteScript.exe'); // Получаем список процессов FastExecuteScript.exe const tasklistOutput = await execCommand('tasklist /FI "IMAGENAME eq FastExecuteScript.exe" /FO CSV /NH'); const processes = tasklistOutput.split('\n').filter(line => line.trim() !== '').map(line => { const columns = line.split('","').map(col => col.replace(/"/g, '').trim()); return { pid: columns[1], name: "FastExecuteScript" }; // имя процесса без расширения }); log(`Общее количество процессов FastExecuteScript.exe: ${processes.length}`); if (processes.length > 0) { for (const process of processes) { // Получаем количество видимых окон для процесса const visibleWindowsCount = await getVisibleWindowsCount(process.name); log(`Процесс FastExecuteScript.exe с ID ${process.pid} имеет ${visibleWindowsCount} видимых окон(а)`); // Если видимых окон больше одного, завершаем процесс if (parseInt(visibleWindowsCount) > 1) { log(`Процесс FastExecuteScript.exe с ID ${process.pid} имеет больше одного видимого окна. Закрытие процесса.`); await execCommand(`taskkill /PID ${process.pid} /T /F`); } else { log(`Процесс FastExecuteScript.exe с ID ${process.pid} имеет одно или меньше видимых окон.`); } } } else { log('Нет запущенных процессов FastExecuteScript.exe'); } } catch (error) { log(`Ошибка: ${error}`); } finally { log(`Скрипт завершен: ${new Date().toLocaleString()}`); } } main(); |
Часовой пояс GMT +3, время: 15:12. |