The best solution I have found is in the blog post Using Newer Version(s) of .NET with PowerShell. This allows powershell.exe to run with .NET 4 assemblies.
Simply modify (or create) $pshome\powershell.exe.config
so that it contains the following:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Additional, quick setup notes:
Locations and files are somewhat platform dependent; however will give you an inline gist of how to make the solution work for you.
- You can find PowerShell’s location on your computer by executing
cd $pshome
in the Powershell window (doesn’t work from DOS prompt).- Path will be something like (example)
C:\Windows\System32\WindowsPowerShell\v1.0\
- Path will be something like (example)
- The filename to put configuration in is:
powershell.exe.config
if yourPowerShell.exe
is being executed (create the config file if need be).- If
PowerShellISE.Exe
is running then you need to create its companion config file asPowerShellISE.Exe.config
- If