在内存中运行powershell脚本

时间:2014-02-24 13:37:49

标签: c# .net windows powershell powershell-v3.0

我正在寻找一种方法,使用系统中最新的PowerShell引擎在内存中运行C#中的powershell脚本。 目前我使用的是Microsoft Windows PowerShell引擎核心程序集(System.Management.Automation),它非常适用于使用powershell 2.0版引擎的powershell脚本。

我的目标是创建一个.NET 2.0或3.5程序集,它使用系统上最新的PowerShell引擎在内存中调用powershell脚本。这可能是版本2或3。

这些是我的先决条件:

  • 我的程序集应该针对.NET 2.0或.NET 3.5
  • 始终使用最新版本的powershell引擎
  • 在内存中运行脚本(暂时不将PS脚本存储在硬盘上)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

创建RAM disk并将脚本文件存储在那里。或者,如果您根本不想存储任何脚本文件,请使用AddCommand() method将单个命令添加到PowerShell对象。

答案 1 :(得分:1)

您可以将脚本作为“嵌入资源”嵌入到C#程序中,然后在运行时将其解压缩。请看一下这条script第149-155行如何做到这一点。定位.NET 2.0到3.5非常简单,因为2.0,3.0和3.5都在.NET 2.0运行时运行 - 只针对.NET 2.0。

但是,如果您希望始终定位最新版本的PowerShell引擎,那将会更加棘手,因为PowerShell V3和V4的目标是.NET 4.0。如果您的程序集始终以.NET 2.0(甚至3.5)为目标,那么您将无法在最新的PowerShell引擎中使用新功能,因为您必须在编译期间引用V3 System.Management.Automation.dll程序集并且它需要。 NET 4.0。