2012-08-23 77 views
7

我試圖在遠程服務器上運行一些腳本時出現問題。遠程運行命令時如何更改Powershell CLR版本?

我們需要所有Powershell會話加載CLR的第4版,因爲我們正在使用我們的腳本加載自己的自定義二進制文件。

我們已經這麼做了一段時間(我們使用類似於此處的修改過的powershell.exe.config這樣做了:How can I run PowerShell with the .NET 4 runtime?),並且在RDP進入'Server1'並打開Powershell會話時一切正常。變量$ PSVersionTable告訴我們加載了CLR v4。

現在,我們正在嘗試通過遠程運行這些命令再碰上我們的問題簡化的事情:當你輸入一個遠程PowerShell會話到同一臺服務器,$ PSVersionTable只顯示V2 ...

所以問題是,如果你在Server1上打開一個本地PowerShell會話,它會加載v4,但是如果你遠離Server2到Server1,它只會加載v2。

有人知道如何告訴Powershell使用CLR v4進行遠程會話嗎?任何幫助將非常感激!

回答

9

嘗試創建一個c:\windows\System32\wsmprovhost.exe.config文件和c:\windows\SysWOW64\wsmprovhost.exe.config文件中的64位操作系統是這樣的:

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0.30319"/>   
     <supportedRuntime version="v2.0.50727"/>   
    </startup> 
</configuration> 
+0

最好的,謝謝基督徒! 對於任何未來發現此問題的人,請注意,您必須在兩個位置創建此文件。你應該在路上。 – Richiban

+1

powershell.exe.config需要在兩個地方.... C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \和C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ – Jonesome