Как сохранить процесс PowerShell открытым с вводом / выводом во время выполнения? - PullRequest
0 голосов
/ 12 апреля 2019

В настоящее время я изучаю, как сохранить процесс PowerShell, чтобы я мог запускать код PS без необходимости каждый раз открывать новый процесс.

Необходимость: - Динамический запуск нескольких сценариев PS, поэтомуони имеют одинаковые базовые (пользовательские) модули, максимально эффективные.

  • Умеют взаимодействовать со stdout / stdin / stderr процесса этих сценариев, пока он еще работает.

  • В идеале я бы хотел, чтобы один процесс открывался с помощью докера, импортировал мои модули, а затем собирал сам код для запуска, запускал его в том же процессе, что и уже открытый, чтобы он победил 'Мне не нужно открывать другой процесс и не импортировать снова мои модули.

Проблема: - Настройка процесса PS в Docker-контейнере занимает огромное количество времени.(Примерно 2,5 с, еще до того, как я начал запускать какой-либо код, и я говорю об одном только процессе PS)

  • На данный момент я не нашел способ PS для запуска динамического кода натот же процесс без создания нового процесса и повторного импорта моих модулей.Также я не нашел способа динамического взаимодействия с новым процессом, пока он еще работает.

Возможные решения: - Создайте начальный процесс PS с -noprofile, чтобы он не загружался так медленно.(Я еще не проверял это, но, похоже, одобряют этот метод ребята из redit) - Используйте start-process с флагом -NoNewWindow, поэтому он будет генерировать новый процесс каждый раз, но я предполагаю, что начальное время установки будет сэкономлено.- Попытка использовать Invoke-Expression для больших кусков кода, но, насколько я понимаю, это не рекомендуется и, вероятно, не позволит активно взаимодействовать с кодом, выполняющимся там, до его завершения.

Start-Process -NoNewWindow

И

Invoke-Expression

Это единственные подходящие механизмы, которые я смог найти до сих пор.

Мне сказали, что AWS-лямбда-функции имеют схожую функциональность с тем, что я пытаюсь достичь, но, глядя на его код, я сделалне добился большого прогресса, подумал, что стоит обратиться за помощью к людям, которые умнее меня :) Любая помощь будет высоко ценится.Я не ищу уже полностью работающее 3-стороннее решение, просто мне достаточно подражать поведению в коде PS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...