OSname 等于 Microsoft Windows Server 2012 R2 Standard,但 AdfsVersion 等于 2.0。这是怎么回事?该怎么办?

OSname 等于 Microsoft Windows Server 2012 R2 Standard,但 AdfsVersion 等于 2.0。这是怎么回事?该怎么办?

PowerShell 查询的摘录结果:

PS C:\Windows\system32> Get-AdfsSystemInformation
OSVersion                 : 6.2.9200.0
OSName                    : Microsoft Windows Server 2012 R2 Standard
MachineType               : VMware Virtual Platform
AdfsVersion               : 2.0

我读过几处地方,AD FS 3.0 符合此声明:“文件“C:\Windows\ADFS\FSConfig.exe”不存在(但文件夹“C:\Windows\ADFS”存在)”。对于我的服务器来说,这是正确的。

PS C:\Windows\system32> [environment]::OSVersion.Version
Major  Minor  Build  Revision
-----  -----  -----  --------
6      2      9200   0

查找您的参考资料,Ramhound,上述命令并没有区分 2012 和 2012 R2,尽管一些 Microsoft 文档是这么说的。

PS C:\Windows\system32> (Get-WmiObject -class Win32_OperatingSystem).Caption
Microsoft Windows Server 2012 R2 Standard

答案1

我很困惑,不知道该怎么办。

Windows Server 2012 R2 仅支持Active Directory Federation Services 3.0,不支持,Active Directory Federation Services 2.0

在此处输入图片描述

来源

获取 AdfsSystemInformation是开源的一部分ADFS 管理工具项目,并且它有一个小的编程错误。 获取 AdfsSystemInformation调用获取 AdfsVersionEx它使用 $OSVersion 来确定是否根据检测到的操作系统版本返回 2 或 3。由于获取 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;
        }

有什么建议么?

您可以自行修复代码,也可以报告问题通过关联的 GitHub 项目向 Microsoft 提供。根据我的研究,Windows Server 2012 R2 上的 AD FS 似乎根本不是AD FS Windows Server 2012 R2ADFS 3.0。同样,Windows Server 2016 上的 AD FS 也是ADFS Windows Server 2016

我还注意到整个Get-AdfsVersionEx函数存在缺陷,因为根据我的研究,当前版本的 ADFS 实际上不是 3.0。因此,返回 Windows 10/Server 2016 的值实际上目前是不正确的。返回值Windows Server 2012也将是不正确的。

Windows Server 2012Windows Server 2012 R2Windows Server 2016都运行在不同版本的 Active Directory 联合身份验证服务上,但仅支持其特定版本。迁移到下一个版本是可能的,并且有据可查(涉及将操作系统迁移到相关操作系统),但除此之外是不可能的。

我认为您说的是 Get-AdfsSystemInformation 错误地报告了 AD FS 版本,您正确地透露了它是开源诊断工具的一部分,可在此处获得。但是,Get-AdfsVersionEx 返回 2.0,这支持该工具的评估。

我确实这么说过。模块无法正常工作的原因是,对和[Environment]::OSVersion.Version都返回相同的值。Windows Server 2012Windows Server 2012 R2

OSVersion 属性报告 Windows 8 和 Windows 8.1 的相同版本号 (6.2.0.0),以及 Windows 10 的相同主版本号和次版本号。

来源:Environment.OSVersion 属性

本文档与 MS Docs 相矛盾。OSName 应报告为 Windows Server 2012。因此,报告的 OSName 是错误的,而 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 Services3.0

相关内容