PowerShell (el motor) funciona bien en .NET 4.0. PowerShell (el host de la consola y el ISE ) no lo hacen, simplemente porque se compilaron con versiones anteriores de .NET. Hay una configuración de registro que cambiará el marco .NET cargado en todo el sistema , lo que a su vez permitirá que PowerShell use las clases .NET 4.0:
reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
Para actualizar solo el ISE para usar .NET 4.0, puede cambiar el archivo de configuración ($ psHome \ powershell_ise.exe.config) para tener un fragmento como este:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
Puede crear aplicaciones .NET 4.0 que llamen a PowerShell utilizando la API de PowerShell (System.Management.Automation.PowerShell) muy bien, pero estos pasos ayudarán a que los hosts PowerShell listos para usar funcionen bajo .NET 4.0.
Elimine las claves de registro cuando ya no las necesite. Estas son claves de toda la máquina y migran por la fuerza TODAS las aplicaciones a .NET 4.0, incluso las aplicaciones que usan .net 2 y .net 3.5