У меня запущена служба, которая может вызывать внешний процесс для изменения текстового потока перед его возвратом в службу. Текстовый поток передается из службы во внешний процесс на стандартный вывод, а измененный результат считывается из службы на стандартный вывод. Другими словами, внешний процесс (команда) может использоваться как текстовый «фильтр». Я хотел бы использовать скрипт powershell для изменения текстового потока. Я могу успешно запустить скрипт из сервиса на win 2008r2 с помощью команды powershell -executionpolicy bypass -noninteractive ./myscript.ps1".
Я могу заставить скрипт возвращать текст службе на стандартный вывод с помощью командлета write-host. Моя проблема в том, что я не могу найти способ прочитать текст на stdin в скрипте. Кажется, что read-host не работает, поскольку для этого требуется интерактивная оболочка.
Я бы хотел не записывать стандартный вывод службы в файл tmp и читать этот файл в сценарии, так как служба многопоточная (может запускать более одной внешней команды одновременно) и управление файлами tmp (блокировка, уникальная имена файлов и т. д.) не нужны.
Возможно ли это, или я должен использовать для этого, например, Perl? Powershell кажется убедительным, поскольку он предустановлен на все мои машины win 2008.