私はWebとStackoverflowを見て回っていましたが、この質問に対する答えが見つかりませんでした。 Node.jsからPowershellスクリプトをどのように実行しますか?スクリプトは、Node.jsインスタンスと同じサーバー上にあります。
子プロセス「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
受け入れられた答えに加えて、ノード内からさまざまな言語を実行できる Edge.js というNode.JSライブラリがあります。 C#、J#、. Net、SQL、Python、 PowerShell およびその他のCLR言語を含む。
Edge.jsはPowerShell 3.0を必要とし、Windowsでのみ動作することに注意してください(他の機能の多くはMacおよびLinuxでも動作します)。
または、単に Node-PowerShell を使用できます。
Node-PowerShellは、今日のテクノロジーの世界に存在する2つの最もシンプルで効果的で簡単なツールを活用しています。一方では、javascriptの世界に革命をもたらしたNodeJS、他方では、最近オープンソースのクロスプラットフォームバージョンを最初に発表し、それらを相互に接続することでPowerShellを使用すると、プログラマ、IT、DevOpsのいずれのユーザーであっても、求められたソリューションを作成します。
このオプションは、スクリプトがまだ存在しない場合に機能しますが、いくつかのコマンドを動的に生成し、それらを送信して、ノードで結果を処理する必要があります。
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;