В коробке с основным сервером Windows Server 2012 R2 я получаю следующие результаты:
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
Похоже, это противоречит обоим отчетам выше. :(
Если вы запустите Get-WindowsFeatures без фильтра, вы увидите, что «AS-Net-Features» является частью «Application Server». Как говорит 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.
Я недавно нашел инструмент, который может помочь определить, какая версия установлена в данной системе, хотя, будучи программой с графическим интерфейсом, я не уверен, что он поможет при установке Server Core. Он называется инструментом проверки установки .NET Framework, и его можно найти здесь: https://blogs.msdn.microsoft.com/astebner/2008/10/13/net-framework-setup-verification-tool-users-guide/
.NET 4.5 установлен. В противном случае вы не отобразили бы CLRVersion 4.0.30319.33440 или PSVersion 4.0.
Еще одна проверка, которую вы можете выполнить:
[console]::WriteLine([Environment]::Version)
Если вас интересует состояние установки «Удалено» и как восстановить полезную нагрузку:
Параметры и компоненты установки Windows Server 2012 R2 по запросу (часть 5 из 5)
«Когда полезная нагрузка функции удаляется из установки, она удаляется из параллельного хранилища в% SystemDrive%: \ Windows \ WinSxS».