未安装.NET Framework的v4.0.30319版本,并且需要运行Windows PowerShell的版本3

我有一个服务器,我们用于批处理

我可以使用svc_accountlogin到服务器并运行powershell -f file.ps1 ,它可以在版本2或3中运行良好,

 powershell -Version 2 -f file.ps1 powershell -f file.ps1 

如果我试图通过批处理器运行它,我会收到以下消息

 Version v4.0.30319 of the .NET Framework is not installed and it is required to run version 3 of Windows PowerShell. 

无论如何让我的批处理器以v3或v2的powershell运行,都会发生此错误。

事情是,.NET被安装。 3.5,4.0和4.5都存在于这个服务器上,所以这个账号login的时候出于某种原因不能识别.NET已经安装了。

添加这个键,然后再次运行它:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "InstallRoot"="C:\\Windows\\Microsoft.NET\\Framework64\\"

我们在.NET Framework版本4(ala:

https://stackoverflow.com/q/2094694

)这涉及到使用激活configuration文件

 <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> 

 set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath = %~dp0 

在我们的案例中的重要部分是,我们正在请求框架版本4.6.1,我们只有4.5安装。

错误信息显然不足,因为框架版本不是问题。 但是因为这个问题是你search那个错误信息时得到的第一个问题,所以这个答案有希望certificate对其他人有用。