我正在寻找一种方法,使用系统中最新的PowerShell引擎在内存中运行C#中的powershell脚本。 目前我使用的是Microsoft Windows PowerShell引擎核心程序集(System.Management.Automation),它非常适用于使用powershell 2.0版引擎的powershell脚本。
我的目标是创建一个.NET 2.0或3.5程序集,它使用系统上最新的PowerShell引擎在内存中调用powershell脚本。这可能是版本2或3。
这些是我的先决条件:
有什么想法吗?
答案 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。