PowerShell中管道符|的等效用法及循环输出传入Node进程问题
PowerShell 管道传递输入到Node进程的解决方案
错误原因
原命令报错的核心是PowerShell管道规则限制:管道右侧只能是可接收标准输入的命令、脚本块或高级函数,不能直接放由&&/;拼接的多语句赋值表达式,所以语法不被识别。
实现方案
方案1:逐次启动Node进程(匹配你描述的需求)
每次循环单独启动一次node进程,传入单次模拟输入:
for ($i = 1; $i -le 1000; $i++) { Start-Sleep -Seconds 1 # 环境变量可提到循环外减少重复执行,放在内部可实现每次启动用不同变量值 $env:NAME = "BROKER" $env:TOPIC_ID = "prices" # 把模拟输入传递给当前启动的node进程 "New Price" | node publisher.mjs }
方案2:仅启动1次Node进程,持续传递输入
适合publisher.mjs是常驻进程、支持持续接收标准输入的场景,执行效率更高:
# 提前设置全局环境变量 $env:NAME = "BROKER" $env:TOPIC_ID = "prices" # 循环输出的所有内容直接通过管道持续传递给同一个node进程 for ($i = 1; $i -le 1000; $i++) { Start-Sleep -Seconds 1 "New Price" } | node publisher.mjs
补充说明
如果需要隔离不同次进程启动的环境变量,避免污染全局会话,可以在调用node前单独设置进程级环境变量,无需修改全局会话配置。
内容的提问来源于stack exchange,提问作者hazartilirot
相关产品推荐
相关产品推荐

