我已经安装了PowerShell v3的发布版本,但在使用-Version参数时遇到了一些麻烦。我有很多需要.NET 4.0的模块,我使用PowerShell v2时没有使用以下的powershell.exe.config文件:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
这将允许我使用.NET 4.0 CLR运行PowerShell v2。一切都没有问题。
我现在已经安装了PowerShell v3的发布版本,只要我使用命令'powershell -version 2'并检查$PSVersionTable
变量,它就会显示它已经加载了PowerShell v3(使用.NET 4.0) 。如果我删除上面的powershell.exe.config
文件并运行相同的命令,则表明已加载PowerShell v2但使用的是.NET 2.0。
所以我的问题是:有没有办法加载PowerShell v2并让它像我以前在安装PowerShell v3之前那样使用.NET 4.0 CLR?或者PowerShell v3不允许这样做?
另外,我应该提一下为什么我要这样做 - 主要是因为当我们切换到V3时可能会出现任何不兼容问题。我打算用V3测试所有内容,但是能够回退到V2可以让我们免于很多麻烦。
答案 0 :(得分:5)
发生的事情如下:
-Version 2
简单,对吧?!
所以,如果你想在.NET 4上保留PSv2,你需要做的是手动禁用发布者策略。这可以在app.config文件中完成,请参阅相关帖子here。
答案 1 :(得分:0)
如果您安装了v3,我不明白为什么要将v2与CLR 4一起使用。如果您的模块需要.NET 4,请使用PowerShell v3:它已使用CLR 4。