Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js中的子生成进程中捕获PowerShell写入进度文本?_Node.js_Powershell_Terminal_Progress Bar_Child Process - Fatal编程技术网

如何在node.js中的子生成进程中捕获PowerShell写入进度文本?

如何在node.js中的子生成进程中捕获PowerShell写入进度文本?,node.js,powershell,terminal,progress-bar,child-process,Node.js,Powershell,Terminal,Progress Bar,Child Process,例如,在node.js中,我创建了如下子进程 child_process.spawn('powershell.exe', ['-executionpolicy', 'remotesigned', '-File', 'save_site_login_web.ps1', data.app_catalogue_url, data.ids.join(",")], { windowsHide:true }); const handler = (data) => { /

例如,在node.js中,我创建了如下子进程

child_process.spawn('powershell.exe', ['-executionpolicy', 'remotesigned', '-File', 'save_site_login_web.ps1', data.app_catalogue_url, data.ids.join(",")], { windowsHide:true });

const handler = (data) => {
     // send data to client
};
    
watcher_shell.stdout.on('data', handler);
watcher_shell.stderr.on('data', handler);
但是,在子进程中,它会显示一个进度条,如下图所示(我是从powershell终端手动运行它得到的)。顶部浅蓝色背景的区域是静态的,保持在顶部,而其中的文本会更新

但是,此进度文本不会在标准输出或标准输出中捕获。如何在node.js中捕获此流

谢谢

输出不是的一部分,因此无法捕获-无论是在PowerShell的会话中,还是在外部通过stdout或stderr捕获

从链接的关于重定向帮助主题:

PowerShell中还有一个进度流,但它不支持重定向

显示了不依赖PowerShell功能的Windows上的解决方法。

由于进度流不可直接重定向

也就是说,自Windows1809+以来,出现了新的伪控制台(ConPTY)API,它基本上允许任何程序像控制台一样运行,从而捕获直接写入控制台的输出


在进行快速搜索时,有一个模块可能在Windows上使用ConPTY API。我还没有尝试过,但它看起来很有希望(VS Code将其用于其集成终端)。

这确实捕获了进度流。我使用npm模块
ansi-to-html
将其转换为友好的html,但在使用node-pty时,它似乎工作得不太好。你知道这个有没有别的模块吗?@omega我不知道。这只是“节点连接”的第一个搜索结果。找到了