我正在尋找一種方法,如何使用系統上找到的最新的PowerShell引擎在內存中運行C#中的PowerShell腳本。 目前,我使用Microsoft Windows PowerShell引擎核心程序集(System.Management.Automation),它適用於使用PowerShell 2.0版引擎的PowerShell腳本。在內存中運行PowerShell腳本
我的目標是創建一個.NET 2.0或3.5程序集,它使用系統上最新的powershell引擎調用內存中的powershell腳本。這可能是版本2或3
這些都是我的先決條件:
- 我的組裝是要針對.NET 2.0或.NET 3.5
- 始終使用PowerShell引擎的最新版本
- 在內存中運行腳本(這是一個禁止將PS腳本臨時存儲在硬盤上)
任何想法?
爲什麼你需要使用最新的PowerShell?你只需要能夠在最新的PowerShell上運行,或者你想要在最新版本中定位新功能? –
當機器上安裝了powershell v3時,腳本使用powershell 3功能。 – DieterS
由於使用較新3.0特性的C#代碼需要針對v3版本的System.Management.Automation.dll進行編譯,因此這將更爲棘手。我將在一個引用SMA v3的類庫中編譯V1/2的東西,引用SMA v1/2和V3/V4的東西。然後在運行時確定系統上使用Assembly.LoadFrom加載相應的類庫。您也將遇到運行正確.NET運行時的問題。這可能需要一個小EXE存根執行此確定,然後從兩個exes(一個用於.NET 2.0,另一個用於4.0) –