Подтвердить что ты не робот

Выполнить Powershell script из Node.js

Я смотрю по сети и на Stackoverflow, но не нашел ответа на этот вопрос. Как вы выполнили бы Powershell script из Node.js? script находится на том же сервере, что и Node.js.

4b9b3361

Ответ 1

Вы можете просто создать дочерний процесс "powershell.exe" и прослушать stdout для вывода команды и stderr для ошибок:

var spawn = require("child_process").spawn,child;
child = spawn("powershell.exe",["c:\\temp\\helloworld.ps1"]);
child.stdout.on("data",function(data){
    console.log("Powershell Data: " + data);
});
child.stderr.on("data",function(data){
    console.log("Powershell Errors: " + data);
});
child.on("exit",function(){
    console.log("Powershell Script finished");
});
child.stdin.end(); //end input

Ответ 2

В дополнение к принятому ответу есть библиотека Node.JS, называемая Edge.js, которая позволяет выполнять различные langugages из в пределах Node. Включая С#, J #,.Net, SQL, Python, PowerShell и другие языки CLR.

Обратите внимание, что Edge.js требует PowerShell 3.0 и работает только в Windows (многие другие функции также работают на Mac и Linux).

Ответ 3

Эта опция работает для меня, когда script еще не существует, но вы хотите динамически генерировать некоторые команды, отправлять их и работать с результатами на node.

var PSRunner = {
    send: function(commands) {
        var self = this;
        var results = [];
        var spawn = require("child_process").spawn;
        var child = spawn("powershell.exe", ["-Command", "-"]);

        child.stdout.on("data", function(data) {
            self.out.push(data.toString());
        });
        child.stderr.on("data", function(data) {
            self.err.push(data.toString());
        });

        commands.forEach(function(cmd){
            self.out = [];
            self.err = [];
            child.stdin.write(cmd+ '\n');
            results.push({command: cmd, output: self.out, errors: self.err});
        });
        child.stdin.end();
        return results;
    },
};

module.exports = PSRunner;

Ответ 4

Или вы можете просто использовать Node-PowerShell.

Node -PowerShell использует два самых простых, эффективных и простых инструмента, которые существуют в современном мире технологий. С одной стороны, NodeJS, который совершил революцию в мире javascript, а с другой стороны, PowerShell, который недавно вышел с исходной кросс-платформенной версией с открытым исходным кодом и связав их вместе, дает вам возможность создайте любое решение, о котором вы просили, независимо от того, являетесь ли вы программистом, специалистом в области информационных технологий или DevOps.