我有一个用于批处理的服务器。
我可以使用 svc_account 登录到服务器并运行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.
无论我让批处理器以 powershell v3 还是 v2 形式运行,都会发生此错误。
问题是,.NET 已安装。该服务器上都存在 3.5、4.0 和 4.5,因此帐户登录时由于某种原因无法识别已安装 .NET。
答案1
添加此键并尝试再次运行:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] "InstallRoot"="C:\\Windows\\Microsoft.NET\\Framework64\\"
答案2
我们在 .NET Framework 版本 4 上运行 powershell (ala:
https://stackoverflow.com/q/2094694
)这涉及使用激活配置文件
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
和
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath = %~dp0
在我们的案例中,重要的部分是我们请求框架版本 4.6.1,但我们只安装了 4.5。
错误消息显然不够充分,因为问题不在于框架版本。但由于这个问题是您在搜索该错误消息时得到的第一个结果,因此希望这个答案对其他人有用。