node.js - 如何在 node.js 的子生成过程中捕获 PowerShell Write-Progress 文本?

标签 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) => {
     // send data to client
};
    
watcher_shell.stdout.on('data', handler);
watcher_shell.stderr.on('data', handler);

但是,在子进程中,它会显示一个如下图所示的进度条(这是我从 powershell 终端手动运行它得到的)。顶部浅蓝色背景的区域是静态的并保持在顶部,而其中的文本会更新。

enter image description here

但是,此进度文本不会在 stdout 或 stderr 中捕获。如何在 Node.js 中捕获此流?

谢谢

最佳答案

mklement0 stated ,进度流不可直接重定向。

话虽如此,自 Windows 1809+ 以来,出现了新的伪控制台 (ConPTY) API,它基本上允许任何程序像控制台一样运行,从而捕获直接写入控制台的输出。

快速搜索一下,有 node-pty据称该模块在 Windows 上使用 ConPTY API。我还没有尝试过,但它看起来很有前途(VS Code 正在将它用于其集成终端)。

关于node.js - 如何在 node.js 的子生成过程中捕获 PowerShell Write-Progress 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66520848/

相关文章:

node.js - 自动同步本地 Github 存储库与服务器上的目录

powershell - imagemagick 中 STDIN/STDOUT 的正确语法

powershell - 如何从 ls 获取全名、路径和文件名?

macos - 在 Mac OS Finder 中打开终端

python - 在Mac上的终端中停止python

python - 如何更改安装了多个版本的默认 python 3 (Ubuntu 18.04)?

node.js - Angular/NodeJS Getstream.io 构建关注/取消关注按钮

javascript - 使用 Redis 存储和获取 bool 值

javascript - 以渐进方式渲染渐进图像

powershell - 日志文件大小增加而没有任何内容