在 Windows Server 2012 R2 Core Server 框中,我得到以下结果:
PS C:\Users\vagrant> Get-WindowsFeature | Where-Object {$_.DisplayName -like "*.NET*"}
Display Name Name Install State
------------ ---- -------------
[ ] .NET Framework 4.5 AS-NET-Framework Removed
[ ] .NET Extensibility 3.5 Web-Net-Ext Available
[ ] .NET Extensibility 4.5 Web-Net-Ext45 Available
[ ] ASP.NET 3.5 Web-Asp-Net Available
[ ] ASP.NET 4.5 Web-Asp-Net45 Available
[ ] .NET Framework 3.5 Features NET-Framework-Features Available
[ ] .NET Framework 3.5 (includes .NET 2.0 and 3.0) NET-Framework-Core Removed
[X] .NET Framework 4.5 Features NET-Framework-45-Fea... Installed
[X] .NET Framework 4.5 NET-Framework-45-Core Installed
[ ] ASP.NET 4.5 NET-Framework-45-ASPNET Available
[ ] .NET Environment 3.5 WAS-NET-Environment Available
我不知道该怎么做解读上述报告.NET Framework 4.5 是安装的还是没安装?为什么“.NET 4.5 功能”是“安装的”,而“.NET 4.5”却是“删除的”?
同一台计算机上的 .net 注册表项如下所示:
根据这篇 MSDN 文章,大概我安装了 .NET Framework 4.5.1。但是,我该如何解释上面的第一个报告?它似乎表明我的 .NET 4.5 安装不完整。
情况变得更糟。考虑以下输出:
PS C:\Users\vagrant> $psversiontable
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.33440
BuildVersion 6.3.9600.16384
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
这看起来与上面的两份报告相冲突。:(
答案1
如果您运行没有过滤器的 Get-WindowsFeatures,您将看到“AS-Net-Features”是“应用程序服务器”的一部分。正如 SimonS 所说,只有在您在该服务器上托管应用程序时才需要它,而不是运行基于 .NET 的应用程序。NET-Framework-Core 是实际安装的 .NET 框架。
$PSVersionTable.PSversion 列出的是已安装的 PowerShell 版本,而不是 .NET Framework。PowerShell 是 Windows Management Framework (WMF) 的一部分,每个版本都依赖于某个 .NET Framework 版本,但它们并不完全相同。例如,WMF 5 需要 .NET 4.5 或更高版本。
至于您安装了哪个版本的 .NET Framework,这只是一个不完整的描述。它告诉我们您安装了 .NET 4.5.1(Windows 附带),这满足了 .NET 4.0 - 4.5.1 的任何要求。它还告诉我们您没有 .NET Framework 3.5,这也是您获得较低版本 .NET Framework 支持的方式。但是,从那时起已经发布了一些 .NET Framework(4.5.2、4.6 和 4.6.1),如果您安装了它们,它们将出现在已安装程序列表中,而不是 Windows 功能中。
我最近发现了一个工具,它可以帮助确定给定系统上的版本,尽管它是一个 GUI 程序,但我不确定它是否有助于安装服务器核心。它被称为 .NET Framework 安装验证工具,可以在这里找到:https://blogs.msdn.microsoft.com/astebner/2008/10/13/net-framework-setup-verification-tool-users-guide/
答案2
已安装 .NET 4.5。否则,您不会显示 CLRVersion 4.0.30319.33440 或 PSVersion 4.0。
您可以执行的另一项验证:
[console]::WriteLine([Environment]::Version)
如果您对“已删除”安装状态感兴趣以及如何恢复有效负载:
Windows Server 2012 R2 按需安装选项和功能(第 5 部分,共 5 部分)
“当从安装中删除功能的有效负载时,它将从 %SystemDrive%:\Windows\WinSxS 的并行存储中删除。”