从NodeJS调用PowerShell

时间:2012-02-06 03:32:33

标签: javascript windows node.js powershell

我正试图在Windows上获取Node.js中文件的所有者。在没有win32api的情况下,我以为我会使用PowerShell命令:

powershell -Command "(get-acl test.txt).owner"

这完全可以从命令行和批处理文件中完成,但只是挂起Node.js exec()

var exec = require('child_process').exec;

exec('powershell -Command "(get-acl test.txt).owner"', function(err,sysout,syserr) {
    console.dir(sysout);
});

PowerShell流程似乎已启动并且永不终止。

有人有:

  1. 关于为什么命令不会在Node.js中返回的想法,或者最好是
  2. 一种让我在Windows上获得Node.js文件所有者的理智方式吗?

1 个答案:

答案 0 :(得分:9)

当您像这样调用Powershell时,您需要关闭输入流。您可能想尝试使用spawn并使用stdin.end()

其他选项是调用cmd /c dir /q <file>,但输出结果很详细。