性能:System.Diagnostics.Process vs System.Management.Automation.PowerShell
在PowerShell Team的这篇博文中 ,他们专注于posh命令。
-
有没有办法在不加载任何PS命令的情况下调用
Create()
,使它像一个系统进程执行器(System.Diagnostics.Process
替代)一样工作? 我们将如何使用System.Management.Automation.PowerShell
执行以下操作:node.exe some_module input_file_path --switch1 --switch2=value2
-
如果1是可能的,下一个问题; 这将执行比
Diagnostics.Process.Start()
更快? -
有没有办法保持在交互模式(在后台线程)调用PS的实例,以交互模式运行node.exe监听来自
IRemoteSource
的调用? 相反; 调用 , 执行命令并closures每个调用。 -
这是交互模式的方式,是否会提升性能(由于
IRemoteSource
调用频繁的大块node.js
命令)?
是的,这是可能的和简单的:
ps.AddScript("node.exe some_module input_file_path --switch1 --switch2=value2");
关于#2,我怀疑它会更快,因为有更多的机器来支持PowerShell引擎/工作区。 关于#3&#4,你需要在这里解释一些你需要的东西。 什么是IRemoteSource?如何与node.exe进行交互? FWIW您可以在另一个线程上执行PowerShell引擎,只要node.exe正在运行,ps.Invoke()调用就不会返回。 如果您需要主机应用程序和node.exe之间的交互,则可以查看实现PowerShell主机接口 。