Comment exécuter PowerShell avec le runtime .NET 4 ?

Comment exécuter PowerShell avec le runtime .NET 4 ?

PowerShell (le moteur) fonctionne bien sous .NET 4.0. PowerShell (l’hôte console et l’ISE) ne le font pas, simplement parce qu’ils ont été compilés avec des versions plus anciennes de .NET. Il existe un paramètre de registre qui va changer le framework .NET chargé à l’échelle du système, ce qui permettra à PowerShell d’utiliser les classes .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

Pour mettre à jour uniquement l’ISE afin d’utiliser .NET 4.0, vous pouvez modifier le fichier de configuration ($psHome\powershell_ise.exe.config) pour avoir un bloc comme celui-ci :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
      <supportedRuntime version="v4.0.30319" />
    </startup>
</configuration>

Vous pouvez créer des applications .NET 4.0 qui appellent PowerShell en utilisant l’API PowerShell (System.Management.Automation.PowerShell) sans problème, mais ces étapes aideront les hôtes PowerShell intégrés à fonctionner sous .NET 4.0.

Supprimez les clés de registre lorsque vous n’en avez plus besoin. Ce sont des clés à l’échelle de la machine qui migrent de force TOUTES les applications vers .NET 4.0, même les applications utilisant .NET 2 et .NET 3.5