向网络添加新的 Windows Vista 或基于 Windows 7 的客户端计算机时,KMS 当前计数不会增加

本文有助于修复以下问题:向网络添加新的基于 Windows Vista 的客户端计算机时,密钥管理服务器(KMS)计算机中的客户端数量不会增加。

适用于: Windows 7 Service Pack 1
原始 KB 数: 929829

现象

在密钥管理服务器 (KMS) 计算机上运行 Slmgr.vbs 脚本时,验证向网络添加新的基于 Windows 的客户端计算机时客户端计算机数量不会增加。 此外,对于添加到网络的每个基于 Windows 的新客户端计算机,你可能会在密钥管理服务事件日志中看到以下事件。

将 Slmgr.vbs 脚本与参数一 -dli 起运行时,客户端计算机计数信息不会按预期增加。 在密钥管理服务事件日志中记录的以下事件中,当前计数保持不变。

原因

当添加到网络的基于 Windows 的客户端计算机具有相同的 KMS 客户端计算机 ID(CMID)时,可能会出现此问题。 当客户端计算机具有不同的 CMID 时,KMS 计算机上的当前计数数将增加。 在以下任一方案中,两台或更多台计算机可以具有相同的 CMID:

  • 即使未运行系统准备工具(Sysprep.exe)以及 /generalize 选项,也会生成用于安装客户端计算机的自定义 Windows 映像。
  • 自定义 Windows 映像与 /generalize 选项一起生成。 但是,可以在 Unattended.xml 文件中指定 <SkipRearm> 设置。

若要验证客户端计算机是否具有相同的 CMID,请执行以下步骤:

  1. 在一台基于 Windows 的客户端计算机上,单击“开始”,指向程序”,指向“附件”,右键单击“命令提示符”,然后单击“以管理员身份运行”。 如果系统提示输入管理员密码或确认,请键入密码,或单击“ 允许”。

  2. 在命令提示符下键入以下命令,然后按 ENTER:cscript c:\windows\system32\slmgr.vbs -dli

  3. 检查以下结果,并记下 CMID。

  4. 在另一台基于 Windows 的客户端计算机上重复步骤 1 到 4。 验证第二台客户端计算机的 CMID 是否与第一台计算机的 CMID 相同。

解决方法

建议在确定受影响的计算机是否具有相同的 CMID 后立即重新生成用于部署受影响计算机的基本映像。

解决方法

仅当用于安装基于 Windows 的客户端的映像中使用 /generalize 选项时,解决方法才有效。 部署多个映像时,此选项是必需的。 若要确定映像中是否使用了 /generalize 选项,请执行以下步骤:

  1. 在某个受影响的计算机上,单击“开始,然后键入 C:\Windows\System32\sysprep\Panther\setupact.log。

  2. 检查“SYSPRP ParseCommands: Found”行,如以下示例日志文件中所示:

    信息 [0x0f004e] SYSPRP 初始化了 C:\Windows\System32\sysprep\Panther 的 SysPrep 日志

    信息 [0x0f0054] SYSPRP ValidateUser:User 对 sysprep 计算机拥有所需的权限
    信息 [0x0f0056] SYSPRP ValidateVersion:OS 版本正常
    信息 [0x0f005c] SYSPRP ScreenSaver:已成功为 sysprep 禁用屏幕保护程序
    信息 [0x0f007e] SYSPRP FCreateTagFile:Tag 文件 C:\Windows\System32\sysprep\Sysprep_succeeded.tag 不存在,无需删除任何内容
    信息 [0x0f005f] SYSPRP ParseCommands:找到支持的命令行选项“UNATTEND”
    信息 [0x0f005f] SYSPRP ParseCommands:找到支持的命令行选项“OOBE”
    信息 [0x0f005f] SYSPRP ParseCommands:找到支持的命令行选项“SHUTDOWN”
    信息 [0x0f005f] SYSPRP ParseCommands:找到支持的命令行选项“GENERALIZE”

  3. 如果存在 /generalize 选项,请确认在创建基础映像的计算机上使用了此选项。

  4. 如果使用了 /generalize 选项,并且计算机具有相同的 CMID,请按照下列步骤重新排列受影响的计算机并重新生成基础映像。 请确保不使用 <SkipRearm> 设置:

    1. 在一台基于 Windows 的客户端计算机上,单击“开始”,指向程序”,指向“附件”,右键单击“命令提示符,然后单击“以管理员身份运行”。

      如果系统提示输入管理员密码或进行确认,请键入密码,或单击“ 允许”。

    2. 在命令提示符下键入以下命令,然后按 ENTER:cscript c:\windows\system32\slmgr.vbs -rearm

    3. 重新启动计算机。

如果未使用带 /generalize 选项的 Sysprep 生成基础映像,则必须重新生成基础映像,然后在客户端上重新安装 Windows。 如果在重新生成基础映像时使用Unattended.xml文件,请确保 <不使用 SkipRearm> 设置。 有关 SkipRearm> 设置的详细信息<,请参阅 Windows 自动安装工具包(Windows AIK)文档。

详细信息

若要重置激活计时器并设置唯一的 CMID,重设进程必须在目标计算机上运行。 此过程用于重置激活状态。 在 Windows 中,可以使用以下两种方法之一来运行重排进程:

  • 将 Sysprep 与用于生成自定义 Windows 映像的计算机上的 /generalize 选项一起运行。
  • 通过在提升的命令提示符窗口中运行 Slmgr.vbs 脚本来强制重新运行进程。 例如,键入:cscript c:\windows\system32\slmgr.vbs -rearm

如果由于 Sysprep 与 /generalize 选项一起运行或由于在 Unattended.xml 文件中使用了 <SkipRearm>1</SkipRearm> 设置,客户端计算机可能具有相同的 CMID,因此未运行 Rearm 进程。 因此,计算机计数信息不会按预期增加。 部署多个映像时,需要使用 /generalize 选项。 <在生产环境中部署计算机时,不应在无人参与的文件中使用 SkipRearm> 设置。 因此,对于这两种情况,我们建议重新生成基础映像。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。