2011-01-08 4 views
7

Sto tentando di caricare un assembly .Net 4.0, utilizzando [Reflection.Assembly] :: LoadFrom, all'interno di una sessione Powershell 2.0 remota. Funziona localmente, a causa di una modifica apportata al file powershell.exe.config, ma non riesce con un'eccezione "Questo assembly viene creato da un runtime più recente ..." in una sessione remota.Powershell 2.0 Remoting caricamento di .Net 4.0 dll

Entrambe le macchine coinvolte hanno .Net 2.0 e 4.0 e hanno la modifica powershell.exe.config per gli eseguibili powershell x86 e x64 bit. Ho anche provato a cambiare le chiavi di registro del server PowerShell: HKLM: \ Software \ Microsoft \ PowerShell \ 1 \ PowerShellEngine \ runtimeVersion HKLM: \ Software \ Wow6432Node \ Microsoft \ PowerShell \ 1 \ PowerShellEngine \ runtimeVersion

devo manchi qualcosa, ma non so cosa sia.

Edit: seguito è riportato un esempio del codice sto eseguendo.

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

Mostra il comando che stai utilizzando .. –

risposta

7

La soluzione consiste nel creare ac: \ windows \ file wsmprovhost.exe.config System32 \ e ac: \ windows \ SysWOW64 \ wsmprovhost.exe.config di file, sul server, simile a quello ho trovato su: http://poshcode.com/2045

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

ho trovato il seguente articolo, che ha accennato a wsmprovhost.exe bisogno di essere configurato proprio come il file PowerShell.exe. http://tfl09.blogspot.com/2010/08/using-later-versions-of-net-framework.html