2012-08-23 24 views
7

Ho riscontrato un problema nel tentativo di eseguire alcuni dei nostri script su un server remoto.Come modificare la versione CLR di PowerShell quando si eseguono i comandi da remoto?

Abbiamo bisogno di tutte le sessioni di PowerShell per caricare v4 del CLR, poiché stiamo caricando nei nostri binari personalizzati con i nostri script.

Lo facciamo da un po 'di tempo (lo facciamo usando un powershell.exe.config modificato simile a questo: How can I run PowerShell with the .NET 4 runtime?), e tutto va bene quando si esegue il RDP in "Server1" e si apre una sessione di Powershell. La variabile $ PSVersionTable ci dice che è stato caricato il CLR v4.

Ora che stiamo cercando di semplificare le cose eseguendo questi comandi da remoto ci imbattiamo in nostro problema: quando si entra in una sessione PowerShell remota nel server stesso, $ PSVersionTable mostra solo v2 ...

Così il il problema è che se apri una sessione Powershell locale su Server1 carica v4, ma se esegui il remote da Server2 a Server1, carica solo v2.

Qualcuno sa come dire a Powershell di utilizzare CLR v4 per sessioni remote? Qualsiasi aiuto sarebbe molto apprezzato!

risposta

9

provare a creare un file c:\windows\System32\wsmprovhost.exe.config e un file c:\windows\SysWOW64\wsmprovhost.exe.config in OS a 64 bit come questo:

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

Incredibile, grazie Christian! Per chi lo trova in futuro, è necessario creare questo file in entrambe le posizioni. Dovresti essere sulla buona strada. – Richiban

+1

Il file powershell.exe.config deve essere in due punti .... C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ e C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ – Jonesome