В настоящее время я изучаю, как сохранить процесс 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.