node.js在控制台上获得批处理输出

时间:2019-04-25 15:33:43

标签: node.js child-process psexec

我正在通过以下脚本中的node.js使用远程Windows批处理文件。

const util = require('util');
const exec = util.promisify(require('child_process').exec);

async function lsExample() {  
  const { stdout, stderr } = await exec('PsExec64 \\\\xxx.xx.xx.xx -u username -p password cmd /c "C:\\work\\test"');
  console.log('stdout:', stdout);
  console.log('stder:', stderr);
}
lsExample();

它正在后台运行并成功完成。问题是,我没有在控制台中获取批处理文件“ test.bat”。它只给出下面的输出。

D:\angular\app\server\try>node try.js
stdout:
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com



Starting cmd on xxx.xx.xx.xx... xxx.xx.xx.xx...
cmd exited on xxx.xx.xx.xx with error code 0.

本地控制台中未显示任何输出。批处理文件非常简单,

echo batch start >output.log
FOR /L %%x in (1,1,10) DO echo %%x Hello Testing>>output.log

我也想阅读output.log。如果我缺少什么,请提出建议。 谢谢

1 个答案:

答案 0 :(得分:0)

node.js部分正在运行,它在控制台中显示了被调用命令(PsExec64)的输出,似乎更多是系统编程问题。无论如何,阅读此(https://docs.microsoft.com/es-es/sysinternals/downloads/psexec),我将-i添加到PsExec64选项。 (免责声明:我现在无法对其进行测试)