如何在节点上创建子shellhell进程

时间:2014-11-20 14:40:13

标签: node.js powershell

我正在尝试在Windows上使用NodeJS生成一个Powershell进程,我可以发送一些命令和输出。我用父节点进程的stdio配置做到了这一点,但是我希望将它分开,并且我无法实现任何正确的工作。

在这段代码中,我希望在psout.txt文件中获得$ PSTableVersion powershell变量的输出,但它永远不会被写入。

简单的代码是:

var
  express = require('express'),
  fs = require('fs'),
  spawn = require("child_process").spawn;

var err = fs.openSync('pserr.txt', 'w');
var out = fs.openSync('psout.txt', 'w');
var writer = fs.createWriteStream(null, {
  fd: fs.openSync('psin.txt', 'w')
});

var child = spawn("powershell.exe", ["-Command", "-"], {
  detached: true,
  stdio: [writer, out, err]
});

writer.write('$PSTableVersion\n');
writer.end();

child.unref();

// just wait
var app = express();
app.listen(3000);

更新

我已尝试使用此节点github问题跟踪器上的代码:https://github.com/joyent/node/issues/8795 似乎调用.NET vs调用本机可执行文件是不同的事情......

0 个答案:

没有答案