如何在运行时使用输入/输出使PowerShell进程保持打开状态?

时间:2019-04-12 11:08:33

标签: powershell aws-lambda serverless powershell-core

这些天,我正在研究如何使Powershell进程保持活动状态,以便我可以运行PS代码而无需每次都打开新进程。

需要: -动态运行多个PS脚本,因此它们具有相同的基本(自定义)模块,并尽可能高效。

  • 能够与仍在运行的这些脚本进程的stdout / stdin / stderr通信。

  • 理想情况下,我希望一个进程使用docker打开,导入我的模块,然后收集代码本身以运行,并以与已经打开的进程相同的进程运行它,因此不必打开另一个进程或再次导入我的模块。

问题: -在docker容器中设置PS进程需要花费大量时间。 (大约2.5秒,在我甚至没有开始运行任何代码之前,我只是在谈论PS流程)

  • 到目前为止,我还没有找到一种PS方式来在不创建新流程并再次导入模块的情况下在同一流程上运行动态代码。我也没有找到一种在新流程仍在运行时与其动态通信的方法。

可能的解决方案: -使用-noprofile创建初始​​PS进程,以免加载速度太慢。 (我尚未对此进行测试,但是重做的人们似乎正在批准这种方法) -使用带有-NoNewWindow标志的启动进程,因此每次都会生成新进程,但是我想可以省去初始设置时间。 -尝试在较大的代码块上使用Invoke-Expression,但是据我所知,不建议这样做,并且在完成之前,可能不会主动与其中运行的代码进行通信。

Start-Process -NoNewWindow

Invoke-Expression

到目前为止,我是唯一可以找到的相关机制。

有人告诉我,AWS Lambda具有与我要实现的功能类似的功能,但是查看它的代码,我并没有取得太大的进步,认为可能值得向比我更聪明的人寻求帮助:)帮助将不胜感激。 我并不寻求已经完全可以使用的3ed侧面解决方案,只是能够模仿PS代码中的行为对我来说已经足够了。

0 个答案:

没有答案