PowerShell (il motore) funziona correttamente con .NET 4.0. PowerShell (l'host della console e lo ISE) non lo fanno, semplicemente perché sono stati compilati rispetto alle versioni precedenti di .NET. C'è un'impostazione di Registro di sistema che cambiare il framework .NET caricato systemwide, che a sua volta permetterà PowerShell utilizzare .NET 4.0 classi:
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
Per aggiornare solo l'ISE di utilizzare NET 4.0, è possibile modificare la configurazione ($ PSHome \ powershell_ise.exe.config) file per avere un pezzo come questo:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
È possibile creare applicazioni .NET 4.0 che chiamano PowerShell utilizzando l'API PowerShell (System.Management.Automation.PowerShell) bene, ma questi passaggi aiuteranno a far funzionare gli host PowerShell in-the-box sotto .NET 4 .0.
Rimuovere le chiavi di registro quando non servono più. Queste sono le chiavi a livello di computer e forzatamente migrare tutte le applicazioni .NET 4.0, anche le applicazioni che utilizzano Net 2 e .NET 3,5
fonte
2010-01-19 20:43:50
duplicati di http://stackoverflow.com/questions/1940983/loading-net-4-0-beta2-assembly-in-powershell-2-0. –
In questi giorni la soluzione più semplice sarebbe installare il CTP Powershell 3.0 che utilizza CLRVersion: 4.0.30319.1. –
** Chiunque sia ancora bloccato con PowerShell 2, [vedere la risposta di Tim Lewis] (https://stackoverflow.com/a/31279372/1958726) ** per una soluzione localizzata che non richiede la modifica di alcuna configurazione a livello di macchina. –