这些天,我正在研究如何使Powershell进程保持活动状态,以便我可以运行PS代码而无需每次都打开新进程。
需要: -动态运行多个PS脚本,因此它们具有相同的基本(自定义)模块,并尽可能高效。
能够与仍在运行的这些脚本进程的stdout / stdin / stderr通信。
理想情况下,我希望一个进程使用docker打开,导入我的模块,然后收集代码本身以运行,并以与已经打开的进程相同的进程运行它,因此不必打开另一个进程或再次导入我的模块。
问题: -在docker容器中设置PS进程需要花费大量时间。 (大约2.5秒,在我甚至没有开始运行任何代码之前,我只是在谈论PS流程)
可能的解决方案: -使用-noprofile创建初始PS进程,以免加载速度太慢。 (我尚未对此进行测试,但是重做的人们似乎正在批准这种方法) -使用带有-NoNewWindow标志的启动进程,因此每次都会生成新进程,但是我想可以省去初始设置时间。 -尝试在较大的代码块上使用Invoke-Expression,但是据我所知,不建议这样做,并且在完成之前,可能不会主动与其中运行的代码进行通信。
Start-Process -NoNewWindow
和
Invoke-Expression
到目前为止,我是唯一可以找到的相关机制。
有人告诉我,AWS Lambda具有与我要实现的功能类似的功能,但是查看它的代码,我并没有取得太大的进步,认为可能值得向比我更聪明的人寻求帮助:)帮助将不胜感激。 我并不寻求已经完全可以使用的3ed侧面解决方案,只是能够模仿PS代码中的行为对我来说已经足够了。