1
在this page上,PowerShell團隊演示如何在您的.NET應用程序中託管PowerShell引擎並向其傳遞命令。承載多個PowerShell版本
有什麼方法可以控制創建PowerShell引擎的哪個版本?也許使用v2的一個腳本,而v4的另一個?
我本來以爲InitialSessionState.Create方法將使得它,但它不會出現這種情況。
在this page上,PowerShell團隊演示如何在您的.NET應用程序中託管PowerShell引擎並向其傳遞命令。承載多個PowerShell版本
有什麼方法可以控制創建PowerShell引擎的哪個版本?也許使用v2的一個腳本,而v4的另一個?
我本來以爲InitialSessionState.Create方法將使得它,但它不會出現這種情況。
我做了一個快速功能您在工作與PowerShell中執行腳本塊2.0
Function Execute-Job ([scriptblock]$ScriptBlock, [array]$ArgumentList, [switch]$PassThru, [switch]$PS2) {
If ($PS2) { $Job = Start-Job -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList -PSVersion 2.0 }
Else { $Job = Start-Job -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList }
If ($PassThru) { $Job | Receive-Job -Wait -AutoRemoveJob }
Else { $Job }
} #End Function Execute-Job
$ScriptBlock = { $PSVersionTable }
Execute-Job $ScriptBlock -PassThru -Ps2
這回:
Name Value
---- -----
PSRemotingProtocolVersion 2.1
BuildVersion 6.1.7601.17514
PSCompatibleVersions {1.0, 2.0}
PSVersion 2.0 <----------
CLRVersion 2.0.50727.5485
WSManStackVersion 2.0
SerializationVersion 1.1.0.1
告訴我你的想法! ;)
發佈到TechNet:https://gallery.technet.microsoft.com/Function-Execute-Job-c2f76200 –
這很好,但不是我們之後。我們需要一個.NET應用程序能夠將腳本發送到PS 2以及PS 3(或PS 4)引擎,所有這些都在同一個應用程序中。 – DougN
我以爲我的代碼很可愛..:P好吧,所以你的PS腳本嵌入在你的.NET應用程序中,所以你不要直接調用powershell.exe來執行。對? –