使用PsExec产生subprocess会导致截断的stdout

我的目标是能够在远程计算机上执行命令,并从运行的命令获得完整的stdout响应。 我得到的是一个截断的结果。 当我通过命令提示符运行相同的命令时,我得到命令运行的完整输出。 这是我的代码:

var process = spawn('PsExec.exe', ['\\\\servername', 'ipconfig']); var doOnce = true; process.stdout.on('data', function (data) { log.info('stdout: ' + data.toString()); if(doOnce){ doOnce = false; process.stdin.write('ipconfig');} }); process.stderr.on('data', function (data) { log.info('stderr: ' + data.toString()); }); process.on('exit', function (code) { log.info('child process exited with code ' + code); }); 

当执行时,我得到以下控制台输出。 正如你所看到的,所有的ipconfig已经被截断了。 如果我执行另一个命令,如netstat,我会在截断发生之前得到大部分结果,所以我不认为这和缓冲区有什么关系。 在这一点上我真的只是出于想法。

 info: stderr: PsExec v2.11 - Execute processes remotely Copyright (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com info: stdout: Windows IP Configuration ipconfig exited on servername with error code 0. info: child process exited with code 0 

尝试使用{stdio:'inherit'}选项

 var spawn = require('child_process').spawn, appname = spawn('psexec.exe', ['-accepteula', '\\\\remotepcname', '-u', 'domain\\username', '-p', 'supersecretpassword', 'ipconfig'], { stdio: 'inherit' });