对未激活的 Active Directory 基于 Active Directory 的激活(ADBA)客户端进行故障排除
注意
本文最初于 2018 年 3 月 26 日作为 TechNet 博客发布。
我最近帮助一位客户在其环境中部署了 Windows Server 2016。 我们还利用此机会将其激活方法从 KMS 服务器迁移到基于 Active Directory 的激活。
作为进行所有更改的适当过程,我们在客户的测试环境中开始迁移。 我们按照基于 Active Directory 的激活与密钥管理服务中的说明开始部署。 测试环境中的域控制器都运行 Windows Server 2012 R2,因此我们不需要准备林。 我们在 Windows Server 2012 R2 域控制器上安装角色,并选择“基于 Active Directory 的激活”作为批量激活方法。 我们安装了 KMS 密钥,并为其命名了“KMS AD 激活(** LAB)。我们逐步遵循了博客文章。
我们首先构建了四个虚拟机、两个 Windows 2016 Server Standard 和两个 Windows 2016 Server Datacenter。 在这一点上,一切都很棒。 我们构建了运行 Windows 2016 Server Standard 的物理服务器,计算机已正确激活。
老实说,设置和配置非常简单,因此该部分简单明了。 但是,我在前一周构建的所有虚拟机都显示它们未激活。 我查看了物理计算机,它是正常的。 我与客户联系,讨论发生了什么。 第一个问题是“周末发生了什么变化?”和往常一样,答案是“什么都没有”。这一次,没有什么真正改变的,我们必须弄清楚发生了什么事。
我去了其中一个问题服务器,打开了命令提示符,并检查了命令的 slmgr /ao-list
输出。 该 /ao-list
开关显示 Active Directory 中的所有激活对象。
结果显示我们有两个激活对象:一个用于 Windows Server 2012 R2,以及新创建的 KMS AD 激活(** LAB),即 Windows Server 2016 许可证。 这确认 Active Directory 已正确配置为激活 Windows KMS 客户端。
知道该 slmgr
命令用于许可证激活,我继续使用不同的选项。 我尝试了 /dlv
开关,该开关将显示详细的许可证信息。 看起来很好,我运行的是 Windows Server 2016 的标准版本,有激活 ID、安装 ID、验证 URL,甚至部分产品密钥。
有人发现我目前遗漏了什么吗? 在我的其他故障排除步骤之后,我们将返回它,但足以说明答案在此屏幕截图中。
我现在的想法是,由于某种原因,密钥已损坏,因此我使用 /upk
开关,这将卸载当前密钥。 虽然这在删除密钥方面有效,但它通常不是执行此操作的最佳方法。 服务器在获取新密钥之前是否应重新启动,这可能会使服务器处于错误状态? 我发现使用 /ipk
开关(稍后在故障排除中执行此操作)会覆盖现有密钥,并且是一种更安全的路线。
我再次运行 /dlv
开关,查看详细的许可证信息。 遗憾的是,这没有给我任何有用的信息,只是找不到产品密钥错误。 因为我刚刚卸载了密钥,所以没有密钥。
我想这是一个很长的镜头,但我尝试 /ato
了开关,应该针对已知的 KMS 服务器激活 Windows(或 Active Directory,因为情况可能)。 同样,只有一个未找到产品的错误。
下一个想法是,有时停止和启动服务会做这个技巧,所以我接下来尝试。 我需要停止后再启动 Microsoft 软件保护平台服务(SPPSvc 服务)。 在管理命令提示符下,我使用信任 net stop
和 net start
命令。 我首先注意到服务未运行,因此我认为这一定是它。
但是,在启动服务并尝试再次激活 Windows 后,我仍然收到产品未找到错误。
然后,我查看了其中一个存在问题的服务器上的应用程序事件日志。 我发现一个与许可证激活相关的错误(事件 ID 8198),它包含代码 0x8007007B。
查找此代码时,我发现了一篇文章,指出错误代码意味着文件名、目录名称或卷标签语法不正确。 阅读本文中所述的方法,似乎没有任何方法适合这种情况。 运行 nslookup -type=all _vlmcs._tcp
该命令时,我找到了现有的 KMS 服务器(环境中仍有大量 Windows 7 和 Server 2008 计算机,因此有必要保留它),但也需要保留 5 个域控制器。 这表明这不是 DNS 问题,问题在其他地方。
因此我知道 DNS 是正常的。 Active Directory 正确配置为 KMS 激活源。 物理服务器已正确激活。 只是 VM 会出现问题吗? 顺便提一下,有趣的是,我的客户告诉我,另一个部门的某个人也决定构建十几台 Windows Server 2016 虚拟机。 因此,现在我想我还有另外十几个服务器来处理,这不会激活。 但是,这些服务器激活得很好。
嗯,我回到 slmgr
命令,弄清楚如何激活这些怪物。 这次我要使用 /ipk
开关,这将允许我安装产品密钥。 我去了 附录 A:KMS 客户端安装密钥 以获取适用于标准版 Windows Server 2016 的密钥。 某些服务器是数据中心服务器,但首先需要修复此服务器。
我使用 /ipk
开关安装产品密钥,选择 Windows Server 2016 标准版密钥。
从现在开始,我只捕获数据中心体验的结果,但它们是相同的。 我使用了 /ato
开关强制激活。 我们收到产品已成功激活的真棒消息。
再次使用 /dlv
开关,可以看到 Active Directory 现已激活。
现在回顾一下,之前出现了什么问题? 为什么必须删除已安装的密钥并添加这些通用密钥,才能正确激活这些计算机? 为什么其他十几台计算机在激活时未出现问题? 正如我之前所说,我在查找问题的初始阶段遗漏了某些关键内容。 我完全感到困惑,所以从最初的博客中联系到海报。 海报马上看到了这个问题,帮助我了解了我早就错过了什么。
当我运行第一个 /dlv
开关时,在说明中是密钥。 描述是“Windows® 操作系统,零售渠道”。 我看到过这个描述,我认为“零售渠道”意味着该计算机已购买并且具有有效密钥。
当我们从正确激活的服务器查看交换机的 /dlv
输出时,请注意说明现在会指出VOLUME_KMSCLIENT通道。 这让我们知道,它确实是批量许可证。
那么零售渠道表示什么呢? 它表示用于安装操作系统的媒体是 MSDN ISO。 我与客户联系,询问网络上是否可能有第二个 Windows Server 2016 ISO。 结果网络上的确有另一个 ISO,它已用于创建另外的十几台计算机。 他们比较了两个 ISO,并确定提供给我的用于构建虚拟服务器的是 MSDN ISO。 他们从其网络中删除了 MSDN ISO,现在我们已经激活了所有现有服务器,不再担心将来的内部版本上的激活失败。