如何在远程运行命令时更改Powershell CLR版本?

9
我在远程服务器上运行一些脚本时遇到了问题。
我们需要加载所有Powershell会话的CLR v4,因为我们正在使用自己的定制二进制文件加载脚本。
我们已经这样做了一段时间(我们使用类似于如何使用.NET 4运行时运行PowerShell?的修改后的powershell.exe.config),当您RDP到'Server1'并打开Powershell会话时,变量$PSVersionTable告诉我们已加载CLR v4。
现在,我们试图通过远程运行这些命令来简化事情,我们遇到了问题:当您进入同一台服务器的远程Powershell会话时,$PSVersionTable仅显示v2......
所以问题是,如果您在Server1上打开本地Powershell会话,则会加载v4,但如果您从Server2远程访问Server1,则仅加载v2。
有人知道如何告诉Powershell在远程会话中使用CLR v4吗?任何帮助都将不胜感激!
1个回答

11

尝试在64位操作系统中创建c:\windows\System32\wsmprovhost.exe.config文件和c:\windows\SysWOW64\wsmprovhost.exe.config文件:

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

太棒了,谢谢Christian!对于未来发现此问题的任何人,请注意必须在两个位置创建此文件。你应该可以继续进行了。 - Richiban
1
powershell.exe.config 需要存在于两个位置.... C:\Windows\System32\WindowsPowerShell\v1.0\ 和 C:\Windows\SysWOW64\WindowsPowerShell\v1.0\。 - Jonesome Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接