【发布时间】:2014-03-26 05:07:50
【问题描述】:
我正在寻找一种方法,了解如何使用系统上最新的 powershell 引擎在内存中的 C# 中运行 powershell 脚本。 目前,我使用 Microsoft Windows PowerShell Engine Core Assembly (System.Management.Automation),它非常适合使用 powershell 2.0 版引擎的 powershell 脚本。
我的目标是创建一个 .NET 2.0 或 3.5 程序集,它使用系统上最新的 powershell 引擎调用内存中的 powershell 脚本。这可能是版本 2 或 3。
这些是我的先决条件:
- 我的程序集应该面向 .NET 2.0 或 .NET 3.5
- 始终使用最新版本的 powershell 引擎
- 在内存中运行脚本(将 PS 脚本临时存储在硬盘上是不行的)
有什么想法吗?
【问题讨论】:
-
为什么需要使用最新的 PowerShell?您只是需要能够在最新的 PowerShell 上运行,还是希望针对最新版本中的新功能?
-
机器上安装powershell v3时,脚本使用powershell 3特性。
-
这将更加棘手,因为使用较新的 3.0 功能的 C# 代码需要针对 v3 版本的 System.Management.Automation.dll 进行编译。我会在一个引用 SMA v1/2 的类库中编译 V1/2 的东西,在另一个引用 SMA v3 的类库中编译 V3/V4 的东西。然后在运行时确定系统上使用哪个 Assembly.LoadFrom 来加载适当的类库。您还会遇到运行正确 .NET 运行时的问题。这可能需要一个小的 EXE 存根来执行此确定,然后启动两个 exe 之一(一个用于 .NET 2.0,一个用于 4.0)
标签: c# .net windows powershell powershell-3.0