2011-01-08 15 views
7

Estoy intentando cargar un ensamblado .Net 4.0, usando [Reflection.Assembly] :: LoadFrom, dentro de una sesión remota de Powershell 2.0. Funciona localmente, debido a un cambio que realicé en el archivo powershell.exe.config, pero falla con una excepción "This assembly is built by runtime newer ..." en una sesión remota.Powershell 2.0 Remoting cargando .Net 4.0 dll

Ambas máquinas involucradas tienen .Net 2.0 y 4.0, y tienen el cambio powershell.exe.config para los ejecutables powershell x86 y x64 bit. También he intentado cambiar las claves de registro del servidor PowerShell: HKLM: \ Software \ Microsoft \ Powershell \ 1 \ PowerShellEngine \ runtimeVersion HKLM: \ Software \ Wow6432Node \ Microsoft \ Powershell \ 1 \ PowerShellEngine \ runtimeVersion

debo perder algo, pero no sé qué es.

Editar: A continuación se muestra un ejemplo del código que estoy ejecutando.

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

Muestra el comando que estás utilizando ... –

Respuesta

7

La solución es crear c: \ windows \ archivo wsmprovhost.exe.config System32 \ y ac: \ windows \ SysWOW64 \ wsmprovhost.exe.config archivo, en el servidor, similar al que se he encontrado en: http://poshcode.com/2045

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

me encontré con el siguiente artículo, que hizo alusión a wsmprovhost.exe que necesita ser configurado igual que el archivo powershell.exe. http://tfl09.blogspot.com/2010/08/using-later-versions-of-net-framework.html