2010-05-04 3 views
5

У меня есть служба, которая может вызывать внешний процесс для изменения текстового потока до его возврата в службу. Текстовый поток передается из службы во внешний процесс на stdout, а измененный результат считывается из службы на stdin. Внешний процесс (команда) можно, другими словами, использовать в качестве текстового «фильтра». Я хотел бы использовать скрипт powershell для изменения текстового потока. Я могу успешно запустить скрипт из службы на win 2008r2, используя команду «powershell -executionpolicy bypass -noninteractive ./myscript.ps1».Сценарий Stdin to powershell

Я могу заставить сценарий вернуть текст в службу на stdout с помощью командлета write-host. Моя проблема в том, что я не могу найти способ прочитать текст на stdin в скрипте. Чтение-хост, похоже, не работает, так как для него требуется интерактивная оболочка.

Я хотел бы избежать написания stdout из службы в tmp-файл и прочитать этот файл в скрипте, поскольку служба многопотоковая (может запускать несколько внешних команд за раз) и управление файлами tmp (блокировка, уникальные имена файлов и т. д.).

Возможно ли это, или я должен использовать, например, Perl для этого? Powershell кажется привлекательным, поскольку он предварительно установлен на всех моих машинах, выигравших 2008 год.

ответ

5

Просто предположим - я бы посмотрел на [Console]::In | gm -static.

+3

Спасибо. $ line = [Console] :: In.ReadLine() сделал трюк. – Stefan