我如何使用.NET 4运行时运行PowerShell?
我正在更新管理某些.NET程序集的PowerShell脚本。 该脚本是为针对.NET 2构建的程序集(PowerShell运行的框架的相同版本)编写的,但现在需要使用.NET 4程序集以及.NET 2程序集。
由于.NET 4支持针对较旧版本框架构建的运行应用程序,因此似乎最简单的解决方案是在需要运行.NET 4程序集时运行带有.NET 4运行时的PowerShell。
我如何使用.NET 4运行时运行PowerShell?
PowerShell(引擎)在.NET 4.0下运行良好。 PowerShell(控制台主机和ISE)并不仅仅是因为它们是针对旧版.NET编译的。 有一个注册表设置可以改变系统加载的.NET框架 ,从而允许PowerShell使用.NET 4.0类:
reg add hklmsoftwaremicrosoft.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
reg add hklmsoftwarewow6432nodemicrosoft.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
要仅更新ISE以使用.NET 4.0,您可以将配置($ psHome powershell_ise.exe.config)文件更改为像这样的块:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
您可以使用PowerShell API(System.Management.Automation.PowerShell)来构建调用PowerShell的.NET 4.0应用程序,但这些步骤有助于让现成的PowerShell主机在.NET 4.0下工作。
当你不再需要它们时,移除注册表项。 这些是机器范围内的密钥,并强制将所有应用程序迁移到.NET 4.0,甚至是使用.net 2和.net 3.5的应用程序
我发现的最佳解决方案是在PowerShell中使用.NET的较新版本进行博客文章。 这允许powershell.exe与.NET 4程序集一起运行。
只需修改(或创建) $pshomepowershell.exe.config
,使其包含以下内容:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
另外,快速安装说明:
位置和文件在某种程度上取决于平台; 但是会给你一个关于如何使解决方案为你工作的内联要点。
cd $pshome
来找到PowerShell在您的计算机上的位置(不能从DOS提示符下运行)。 C:WindowsSystem32WindowsPowerShellv1.0
PowerShell.exe
正在执行(如果需要,创建配置文件),将配置放入的文件名为: powershell.exe.config
。 PowerShellISE.Exe
正在运行,则需要将其配套文件创建为PowerShellISE.Exe.config
请使用注册表键方法非常小心。 这些是机器范围内的密钥,并将所有应用程序强制迁移到.NET 4.0。
如果被迫迁移,许多产品都不起作用,这是一种测试帮助,而不是一种生产质量机制。 Visual Studio 2008和2010,MSBuild,turbotax以及大量网站,SharePoint等不应该被自动化。
如果您需要在4.0中使用PowerShell,那么应该在每个应用程序的基础上配置一个配置文件,您应该向PowerShell团队咨询确切的建议。 这很可能会破坏一些现有的PowerShell命令。
链接地址: http://www.djcxy.com/p/4941.html