为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用.NET 4运行时运行PowerShell?

如何使用.NET 4运行时运行PowerShell?

慕运维8079593 2019-06-27 16:49:26
如何使用.NET 4运行时运行PowerShell?我正在更新一个管理一些.NET程序集的PowerShell脚本。脚本是为基于.NET 2构建的程序集编写的(与PowerShell运行的框架版本相同),但现在需要使用.NET 4程序集和.NET 2程序集。由于.NET 4支持运行针对框架的旧版本构建的应用程序,因此,当我需要在.NET 4程序集上运行PowerShell时,使用.NET 4运行时启动PowerShell似乎是最简单的解决方案。如何使用.NET 4运行时运行PowerShell?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我找到的最好的解决方案就是在博客上发表文章。在PowerShell中使用更新版本的.NET..这允许powershell.exe与.NET 4程序集一起运行。

只需修改(或创建)$pshome\powershell.exe.config因此,它包含以下内容:

<?xml version="1.0"?> <configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0.30319"/> 
        <supportedRuntime version="v2.0.50727"/> 
    </startup> </configuration>

附加的快速设置说明:

位置和文件在某种程度上与平台有关;但是,它将为您提供如何使解决方案为您工作的内联要点。

  • 您可以通过执行以下操作找到PowerShell在计算机上的位置

    cd $pshome 在Powershell窗口中

    (DOS提示不起作用)。
    • 路径将类似于(例如)

      C:\Windows\System32\WindowsPowerShell\v1.0\

  • 要在其中放置配置的文件名是:

    powershell.exe.config

    如果你

    PowerShell.exe

    正在执行中(如果需要,请创建配置文件)。
    • 如果

      PowerShellISE.Exe

      正在运行,则需要将其配套配置文件创建为

      PowerShellISE.Exe.config


查看完整回答
反对 回复 2019-06-27
?
皈依舞

TA贡献1851条经验 获得超3个赞

请小心使用注册表项方法。这些是机器范围内的密钥,并且严格地将所有应用程序迁移到.net 4.0.

如果强行迁移,许多产品都无法工作,这是一种测试工具,而不是生产质量机制。VisualStudio 2008和2010MSBuild、TurboTax和许多网站,SharePoint等等,不应该是自动化的。

如果您需要在4.0中使用PowerShell,这应该在每个应用程序的基础上使用一个配置文件,您应该与PowerShell团队就精确的建议进行检查。这可能会破坏一些现有的PowerShell命令。


查看完整回答
反对 回复 2019-06-27
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

Powershell(引擎)在.NET 4.0下运行良好。Powershell(控制台主机和ISE)不要,仅仅是因为它们是针对旧版本的.NET编译的。在全系统范围内更改加载的.NET框架,从而允许PowerShell使用.NET 4.0类:

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1reg add hklm\software\wow6432node\microsoft\.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的应用程序。


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 855 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信