Я в замешательстве и не знаю, что делать.
Windows Server 2012 R2 поддерживает только Active Directory Federation Services 3.0
, не поддерживает Active Directory Federation Services 2.0
Источник
Get-AdfsSystemInformation является частью проекта ADFS Management Tools с открытым исходным кодом и содержит небольшую программную ошибку. Get-AdfsSystemInformation вызывает Get-AdfsVersionEx, который использует $ OSVersion, чтобы определить, будет ли он возвращать 2 или 3 в зависимости от обнаруженной версии операционной системы. Поскольку Get-AdfsVersionEx использует [Environment]::OSVersion.Version
для определения версии операционной системы, вместо правильного метода, возвращает неверное значение 6.2.9200.0.
Это означает, что из-за следующего кода код возвращает значение 2 вместо 3.
If ($OSVersion.Major -eq 6)
{
# Windows 2012 R2
If ($OSVersion.Minor -ge 3)
{
return $adfs3;
}
Какие-либо предложения?
Вы можете исправить код самостоятельно или сообщить о проблеме в Microsoft через связанный проект GitHub. В моем исследовании кажется, что AD FS на Windows Server 2012 R2 - это просто AD FS Windows Server 2012 R2
не ADFS 3.0. Аналогично, AD FS в Windows Server 2016 - это ADFS Windows Server 2016
.
Я также заметил, что вся функция Get-AdfsVersionEx
имеет недостатки, поскольку, согласно моим исследованиям, текущая версия ADFS на самом деле не 3.0. Поэтому возвращаемое значение для Windows 10/Server 2016 на самом деле на данный момент неверно. Возвращаемое значение для Windows Server 2012
также будет неверным.
Windows Server 2012
, Windows Server 2012 R2
и Windows Server 2016
все работают в разных версиях служб федерации Active Directory, но поддерживают только свою конкретную версию. Миграция на следующую версию возможна и хорошо документирована (включает миграцию ОС на соответствующую ОС), но в противном случае невозможна.
Я думаю, что вы говорите, что версия AD FS неправильно сообщается Get-AdfsSystemInformation, которую вы правильно указали, является частью диагностического инструмента с открытым исходным кодом, доступного здесь. Но Get-AdfsVersionEx возвращает 2.0, что поддерживает оценку инструмента.
Я действительно говорю это. Причина, по которой модуль не работает, заключается в том, что [Environment]::OSVersion.Version
возвращает одинаковое значение как для Windows Server 2012
и для Windows Server 2012 R2
.
Свойство OSVersion сообщает об одном и том же номере версии (6.2.0.0) для Windows 8 и Windows 8.1 и об одном и том же номере основной и вспомогательной версии для Windows 10.
Источник: Окружающая среда.OSVersion Property
Этот документ противоречит этому: MS Docs. OSName следует указывать как Windows Server 2012. Поэтому OSName, как сообщается, имеет значение false, а версия ADFS является правильной.
Я основал весь свой ответ на предоставленной вами информации. В информации, которую вы указали, указана сборка 6.2.9200.0 вместо правильного значения.
PS C:\Windows\system32> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
6 2 9200 0
Даже если вы используете Windows Server 2012 R2, сообщаемая версия заставляет модуль сообщать о неверной версии Active Directory Federation Services
. Вы, кстати, на сервере запущены Active Directory Federation Services
3.0