性能:System.Diagnostics.Process vs System.Management.Automation.PowerShell

在PowerShell Team的这篇博文中 ,他们专注于posh命令。

  1. 有没有办法在不加载任何PS命令的情况下调用Create() ,使它像一个系统进程执行器( System.Diagnostics.Process替代)一样工作? 我们将如何使用System.Management.Automation.PowerShell执行以下操作:

     node.exe some_module input_file_path --switch1 --switch2=value2 
  2. 如果1是可能的,下一个问题; 这将执行比Diagnostics.Process.Start()更快?

  3. 有没有办法保持在交互模式(在后台线程)调用PS的实例,以交互模式运行node.exe监听来自IRemoteSource的调用? 相反; 调用执行命令closures每个调用。

  4. 这是交互模式的方式,是否会提升性能(由于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主机接口 。