企业客户将其密钥管理服务(KMS)设置为部署过程的一部分,因为它允许他们在环境中使用简单、直接的过程来激活 Windows。 通常,设置 KMS 主机后,KMS 客户端会自动连接到主机并自行激活。 但是,有时该过程无法按预期工作。 本文逐步讲解如何排查可能遇到的任何问题。
有关事件日志条目和 slmgr.vbs
脚本的详细信息,请参阅 批量激活技术参考。
开始对 KMS 进行故障排除的位置
让我们快速回顾一下 KMS 激活的工作原理。 KMS 是客户端服务器模型,与动态主机配置协议(DHCP)有一些相似之处。 但是,KMS 会启用产品激活,而不是向客户端针对其请求发出 IP 地址。 KMS 也是续订模型,客户端尝试定期重新激活。 有两个角色: KMS 主机 和 KMS 客户端。
- KMS 主机运行激活服务,并在环境中进行激活。 若要配置 KMS 主机,必须从批量许可证服务中心(VLSC)安装 KMS 密钥,然后激活该服务。
- KMS 客户端是在环境中部署的 Windows 操作系统,需要激活。 KMS 客户端可以运行使用批量激活的任何版本的 Windows。 KMS 客户端附带预安装的密钥,称为 通用批量许可证密钥(GVLK) 或 KMS 客户端安装密钥。 GVLK 的存在使系统成为 KMS 客户端。 KMS 客户端使用域名系统(DNS)服务(SRV)记录(
_vlmcs._tcp
)来标识 KMS 主机。 接下来,客户端会自动尝试发现并使用此服务自行激活。 在 30 天的开箱即用宽限期期间,他们尝试每两小时激活一次。 激活 KMS 客户端后,它们尝试每隔七天续期一次激活。
从故障排除的角度来看,可能需要同时查看主机和客户端,以确定问题发生的原因。
KMS 主机上的故障排除
在故障排除期间检查 KMS 主机时,应查看以下两个方面:
- 使用
slmgr.vbs
命令行提示符中的命令检查主机软件许可证服务的状态。 - 检查事件查看器中是否有与许可或激活相关的事件。
使用 slmgr.vbs 命令检查软件许可服务
若要查看软件许可服务的详细输出,请打开提升的命令提示符窗口并输入 slmgr.vbs /dlv
。 以下屏幕截图显示了在Microsoft中的某个 KMS 主机上运行此命令的结果。
下面是在故障排除时应注意的输出中的一些变量:
版本信息位于
slmgr.vbs /dlv
输出的顶部。 版本信息对于确定服务是否是最新的非常有用。 确保所有内容都是最新的,因为 KMS 服务支持不同的 KMS 主机密钥。 可以使用此数据来评估当前正在使用的版本是否支持尝试安装的 KMS 主机密钥。 有关更新的详细信息,请参阅 Windows Vista 和 Windows Server 2008 的更新,以扩展对 Windows 7 和 Windows Server 2008 R2 的 KMS 激活支持。“名称”指示在 KMS 主机系统上运行的 Windows 版本。 可以使用此信息来排查涉及添加或更改 KMS 主机密钥的问题。 例如,可以使用此信息来验证 OS 版本是否支持你尝试使用的密钥。
说明显示当前安装的密钥。 使用此字段验证首次激活服务的密钥是否为已部署的 KMS 客户端的正确密钥。
许可证状态显示 KMS 主机系统的状态。 该值应 获得许可。 任何其他值意味着应重新激活主机。
当前计数显示介于 0 和 50 之间的计数。 计数是在操作系统之间的累积,表示在 30 天的时间内尝试激活的有效系统的数量。
如果计数为 0,那么要么是服务最近被激活,要么是没有有效客户端连接到 KMS 主机。
无论环境中存在多少有效系统,计数都不会增加超过 50。 计数被设置为仅缓存由 KMS 客户端返回的许可证策略最大值的两倍。 最大策略由 Windows 客户端操作系统设置,这需要来自 KMS 主机的 25 或更大计数才能自行激活。 因此,KMS 主机可以达到的最高计数是 2 x 25 或 50。 在仅包含 Windows Server KMS 客户端的环境中,KMS 主机上的最大计数为 10。 此限制是因为 Windows Server 版本的阈值为 5 (2 x 5 或 10)。
当环境具有激活的 KMS 主机和足够的客户端时,与计数相关的常见问题发生,但计数不会超过一个。 出现此问题时,这意味着部署的客户端映像未正确配置,因此系统没有唯一的客户端计算机 ID(CMID)。 若要了解详细信息,请参阅:
计数可能不会增加的另一个原因是环境中存在过多的 KMS 主机,并且计数分布在所有这些主机上。
我们经常被问及输出中slmgr.vbs /dlv
部分。 通常,此数据对故障排除没有帮助。 KMS 主机会持续记录尝试激活或重新激活的每个 KMS 客户端的状态。 失败的请求表示 KMS 主机不支持某些 KMS 客户端。 例如,如果 Windows 7 KMS 客户端尝试针对使用 Windows Vista KMS 密钥激活的 KMS 主机激活,激活将失败。
“具有许可证状态的请求”行描述了所有可能的许可证状态,包括过去和现在。 从故障排除的角度来看,仅当计数未按预期增加时,此数据才相关。 在这种情况下,应看到失败的请求数增加。 若要解决此问题,应检查用于首次激活 KMS 主机系统的产品密钥。 此外,请注意,仅当重新安装 KMS 主机系统时,累积请求值才会重置。
有用的 KMS 主机事件
你应该熟悉以下部分中描述的事件 ID,以便更有效地排查与主机相关的问题。
事件 ID 12290
当 KMS 客户端尝试激活并与主机联系时,KMS 主机会创建标记为事件 ID 12290的日志。 事件 ID 12290 包含可用于找出与主机联系的客户端类型以及发生故障的原因的信息。 以下事件 ID 12290 条目段来自 KMS 主机的密钥管理服务事件日志。
事件详细信息包括以下信息:
- 激活所需的最小计数,报告来自 KMS 主机的计数必须为 5 才能激活客户端。 这意味着,此 OS 是 Windows Server OS,尽管此变量单独不指示客户端正在使用的版本。 如果客户端未激活,请确保主机的计数允许客户端激活。
- 客户端计算机 ID (CMID),它是每个系统上的唯一值。 如果此值不唯一,是因为映像未正确配置为使用 sysprep 进行分发。 若要了解有关通用化计算机的详细信息,请参阅 Sysprep (通用化)Windows 安装。 遇到此问题时,即使环境中有足够的客户端,KMS 主机计数也不会增加。
- 许可证状态和状态过期时间,这是客户端的当前许可证状态。 此变量可以帮助你判断客户端是首次尝试激活还是尝试重新激活。 如果没有任何其他内容发生更改,则时间条目还可以告知客户端保持该状态的时间。
如果要对客户端进行故障排除,并且无法在 KMS 主机上找到相应的事件 ID 12290,则客户端不会连接到 KMS 主机。 缺少事件 ID 12290 条目的原因可能包括:
网络中断。
主机未解析或未在 DNS 中注册。
防火墙正在阻止 TCP 1688。
该端口也可以在环境中的其他地方被阻止,包括 KMS 主机系统本身。 默认情况下,KMS 主机具有 KMS 的防火墙例外,但不会自动启用此异常。 若要添加此异常,请在提升的 PowerShell 窗口中运行以下命令:
New-NetFirewallRule -DisplayName "KMS Host Activation" -Direction Inbound -Protocol TCP -LocalPort 1688 -Action Allow New-NetFirewallRule -DisplayName "KMS Host RPC" -Direction Inbound -Protocol TCP -LocalPort 135 -Action Allow
事件日志已满。
KMS 客户端记录两个相应的事件:事件 ID 12288 和事件 ID 12289。 有关这些事件的信息,请参阅 KMS 客户端 部分。
事件 ID 12293
在 KMS 主机上查找的另一个相关事件是事件 ID 12293。 此事件指示主机未在 DNS 中发布所需的记录。 此方案可能会导致故障,应在设置主机和部署客户端之前确保事件不存在。 有关 DNS 问题的详细信息,请参阅 KMS 和 DNS 问题的常见故障排除过程。
KMS 客户端
还可以使用 slmgr.vbs
命令和事件查看器排查 KMS 客户端上的激活问题。
Slmgr.vbs 和软件许可服务
若要查看软件许可服务的详细输出,请打开提升的命令提示符窗口,并在命令提示符处输入 slmgr.vbs /dlv
。 以下屏幕截图显示了Microsoft中某个 KMS 主机上此命令的结果。
下面是在故障排除时应注意的输出中的一些变量:
- 名称,指示 KMS 客户端系统使用的 Windows 版本。 可以使用此变量来验证你尝试激活的 Windows 版本是否与 KMS 兼容。
-
说明,其中显示了已安装的密钥。 例如,
VOLUME_KMSCLIENT
指示系统安装了 KMS 客户端安装密钥或 GVLK,这是批量许可证媒体的默认配置。 具有 GVLK 的系统会自动尝试使用 KMS 主机激活。 如果在此处看到其他值(如 MAK),则必须重新安装 GVLK 以将此系统配置为 KMS 客户端。 可以按照说明在slmgr.vbs /ipk <GVLK>
中运行,或按照批量激活管理工具(VAMT)技术参考中的说明手动安装密钥,以改用 VAMT。 - 分部产品密钥,可用于确定 KMS 客户端安装密钥是否与 KMS 客户端使用的作系统匹配。 默认情况下,正确的密钥存在于使用批量许可服务中心(VLSC)门户中的媒体生成的系统上。 在某些情况下,客户可能会使用多个激活密钥(MAK)激活,直到环境中有足够的系统来支持 KMS 激活。 必须在这些系统上安装 KMS 客户端安装密钥,才能将其从 MAK 转换为 KMS。 使用 VAMT 安装此密钥,并确保使用正确的密钥。
- 许可证状态 显示 KMS 客户端系统的状态。 对于 KMS 激活的系统,此值应 已授权。 任何其他值都可能指示存在问题。 例如,如果 KMS 主机正常运行,并且 KMS 客户端仍然未激活或停滞在 Grace 状态,这意味着某些内容正在阻止客户端到达主机系统。 此阻塞可能是防火墙问题、网络中断等。
- 客户端计算机 ID (CMID),该 ID 在每个 KMS 客户端中应是唯一的。 如使用 slmgr.vbs 命令检查软件许可服务中所述,与计数相关的常见问题是,无论在环境中激活多少 KMS 主机或客户端,计数都不会超过一个。 有关详细信息,请参阅在向 网络添加新的 Windows Vista 或基于 Windows 7 的客户端计算机时,KMS 当前计数不会增加。
- 来自 DNS 的 KMS 计算机名称,其中显示了客户端成功用于激活的 KMS 主机的 FQDN 以及用于通信的 TCP 端口。
- KMS 主机缓存,显示是否启用缓存。 默认情况下,缓存通常处于启用状态。 启用缓存时,KMS 客户端将缓存用于激活的同一 KMS 主机,并直接与此主机通信,而不是在重新激活时查询 DNS。 如果客户端无法联系缓存的 KMS 主机,它会查询 DNS 来发现新的 KMS 主机。
KMS 客户端事件
以下部分介绍应熟悉的客户端事件,以帮助更有效地排查潜在问题。
事件 ID 12288 和事件 ID 12289
当 KMS 客户端成功激活或重新激活时,客户端会记录两个事件:事件 ID 12288 和事件 ID 12289。 以下屏幕截图显示了事件 ID 12288 条目的段来自 KMS 客户端的密钥管理服务事件日志。
如果只观察事件 ID 12288 且没有匹配的事件 ID 12289,则表示以下问题之一:KMS 客户端无法连接到 KMS 主机、KMS 主机无法响应或客户端未收到主机的响应。
在这些情况下,必须验证 KMS 主机是否可发现,以及 KMS 客户端是否可以联系它。
事件 ID 12288 中最相关的信息是 信息 字段中的数据。 例如,信息显示客户端的当前状态,以及客户端尝试激活时使用的 FQDN 和 TCP 端口。 可以使用 FQDN 来解决 KMS 主机上的计数不增加的问题。 例如,如果客户端可用的 KMS 主机过多(合法或不受支持的系统),则计数可能会分发到所有这些主机上。
未成功的激活并不总是意味着客户端具有事件 ID 12288,而不是 12289。 失败的激活或重新激活也可能同时包含这两个事件。 在这种情况下,必须检查第二个事件以验证失败原因。
事件 ID 12289 的“信息”部分提供以下信息:
- 激活标志,指示激活成功(1)还是失败(0)。
- KMS 主机上的当前计数,当客户端尝试激活时显示 KMS 主机上的计数值。 如果激活失败,可能是因为此客户端 OS 的计数不足,或者环境中没有足够的系统来生成计数。
支持要求什么?
如果在故障排除后激活未按预期工作,可以 联系Microsoft支持人员 获取技术支持。 支持工程师通常要求以下信息:
-
slmgr.vbs /dlv
来自 KMS 主机和 KMS 客户端系统的输出。 - 来自 KMS 主机(密钥管理服务日志)和 KMS 客户端系统(应用程序日志)的事件日志。