我有一个运行的服务,它可以调用外部进程来修改文本流,然后再将其返回给服务。文本流在stdout上从服务传递到外部进程,并且从stdin上的服务读取修改后的结果。换句话说,外部进程(命令)可以用作文本“过滤器”。我想使用powershell脚本来修改文本流。我可以使用命令“powershell -executionpolicy bypass -noninteractive ./myscript.ps1”从win 2008r2上的服务成功启动脚本。
我可以使用write-host cmdlet使脚本将文本返回到stdout上的服务。我的问题是我找不到在脚本中读取stdin上的文本的方法。 Read-host似乎不起作用,因为它需要一个交互式shell。
我想避免将stdout从服务写入tmp文件并在脚本中读取该文件,因为服务是多线程的(一次可以启动多个外部命令)和tmp文件管理(锁定,唯一文件名等)是不可取的。
这是可能的,还是我应该使用例如Perl? Powershell似乎引人注目,因为它已预装在我所有的2008年机器上。
答案 0 :(得分:6)
只是一个猜测 - 我会看看[Console]::In | gm -static
。