<p>PowerShell (le moteur) fonctionne bien sous .NET 4.0. PowerShell (l’hôte console et l’<a href="https://en.wikipedia.org/wiki/Windows_PowerShell#PowerShell_2.0">ISE</a>) 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 <strong>changer le framework .NET chargé à l’échelle du système</strong>, ce qui permettra à PowerShell d’utiliser les classes .NET 4.0 :</p>
<pre><code class="lang-auto">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
</code></pre>
<p>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 :</p>
<pre><code class="lang-auto"><?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
</code></pre>
<p>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.</p>
<p><strong>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</strong></p>