Powershell 2.0 Remoting加载.Net 4.0 dll

时间:2011-01-08 01:05:07

标签: powershell .net-4.0 powershell-remoting

我正在尝试使用远程Powershell 2.0会话中的[Reflection.Assembly] :: LoadFrom加载.Net 4.0程序集。由于我对powershell.exe.config文件所做的更改,它在本地工作,但在远程会话中失败并显示“此程序集由运行时更新...构建”异常。

所涉及的两台机器都有.Net 2.0和4.0,并且对x86和x64位powershell可执行文件进行了powershell.exe.config更改。我也尝试更改服务器powershell注册表项: HKLM:\ SOFTWARE \微软\ Powershell的\ 1 \ PowerShellEngine \ RuntimeVersion HKLM:\ SOFTWARE \ Wow6432Node \微软\ Powershell的\ 1 \ PowerShellEngine \ RuntimeVersion

我必须遗漏一些东西,但我不知道它是什么。

修改 以下是我正在执行的代码示例。

PS C:\>Enter-PSSession -ComputerName server1
[server1]: PS C:\stuff> dir *.dll | foreach { [Reflection.Assembly]::LoadFrom( $_.FullName ) }

1 个答案:

答案 0 :(得分:7)

解决方案是创建ac:\ windows \ System32 \ wsmprovhost.exe.config文件和ac:\ windows \ SysWOW64 \ wsmprovhost.exe.config文件,在服务器上,类似于我找到的一个:http://poshcode.com/2045

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

我发现了以下文章,其中暗示需要像powershell.exe文件一样配置wsmprovhost.exe。 http://tfl09.blogspot.com/2010/08/using-later-versions-of-net-framework.html