2012-08-23 21 views
7

Tengo un problema al tratar de ejecutar algunos de nuestros scripts en un servidor remoto.¿Cómo cambiar la versión de Powershell CLR cuando se ejecutan comandos de forma remota?

Necesitamos todas las sesiones de Powershell para cargar v4 del CLR, ya que estamos cargando nuestros propios binarios personalizados con nuestros scripts.

Hemos estado haciendo esto durante un tiempo (lo hacemos usando un powershell.exe.config modificado similar a aquí: How can I run PowerShell with the .NET 4 runtime?), y todo está bien cuando RDP en 'Servidor1' y abre una sesión de Powershell. La variable $ PSVersionTable nos dice que CLR v4 está cargado.

Ahora que estamos tratando de simplificar las cosas mediante la ejecución de estos comandos de forma remota nos encontramos con nuestro problema: cuando entras en una sesión de PowerShell remoto en el mismo servidor, $ PSVersionTable muestra solamente v2 ...

Así que la El problema es que si abre una sesión local de Powershell en el Servidor1, carga el v4, pero si lo hace desde el Servidor2 al Servidor1, solo carga v2.

¿Alguien sabe cómo decirle a Powershell que use CLR v4 para sesiones remotas? ¡Cualquier ayuda sería muy apreciada!

Respuesta

9

intente crear un archivo c:\windows\System32\wsmprovhost.exe.config y un archivo c:\windows\SysWOW64\wsmprovhost.exe.config en SO de 64 bits como esto:

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

increíble, gracias cristiana! Para cualquiera que encuentre esto en el futuro, NB tiene que crear este archivo en ambas ubicaciones. Deberías estar en camino. – Richiban

+1

El archivo powershell.exe.config debe estar en dos lugares ... C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ y C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ – Jonesome

Cuestiones relacionadas