可使用以下两个选项在创建过程中自定义即时克隆 Windows 虚拟机 (VM):VMware ClonePrep 和 Microsoft Sysprep。
ClonePrep 是一个 VMware 自定义进程,该进程在即时克隆部署期间运行,用于对从父映像创建的每个桌面克隆进行个性化设置。
Sysprep 是一个 Microsoft 工具,用于通过基础映像部署配置的操作系统安装。然后,可根据应答脚本自定义桌面。
客户机自定义选项
ClonePrep 和 Sysprep 可确保所有即时克隆全部加入到 Active Directory 域。使用 ClonePrep 时,这些克隆将使用与最佳配置映像相同的计算机安全标识符 (Security Identifier, SID)。如果您需要即时克隆使用彼此不同且不同于最佳配置映像的 SID,请使用 Sysprep。ClonePrep 还会保留应用程序的全局唯一标识符 (Globally Unique Identifier, GUID),不过某些应用程序会在自定义期间生成新的 GUID。有关各种不同克隆类型的更多指导,请参阅知识库文章 2003797。
添加即时克隆桌面池时,不论使用的是 ClonePrep 还是 Sysprep,您都可以指定一个在创建克隆后立即运行的脚本,以及另外一个在关闭克隆电源之前运行的脚本。
- 运行脚本
ClonePrep 和 Sysprep 使用 Windows CreateProcess API 来运行脚本。您的脚本可以调用任何可通过 CreateProcess API 创建的进程。例如,cmd、vbscript、exe 和批处理文件进程可与此 API 配合使用。
ClonePrep 和 Sysprep 会将脚本的路径作为第二个参数传递到 CreateProcess API,并将第一个参数设置为
NULL
。例如,如果脚本路径为 c:\myscript.cmd,则对 CreateProcess 的调用为 CreateProcess(NULL,c:\myscript.cmd,...)。 - 提供脚本路径
在创建或编辑桌面池时,您可以指定脚本。这些脚本必须位于最佳配置映像中。您不能使用指向网络共享位置的 UNC 路径。
如果您使用需要解释程序才能运行脚本的脚本语言,则脚本路径必须以解释程序的可执行文件开头。例如,必须指定 C:\windows\system32\cscript.exe c:\script\myvb.vbs,而不是指定 C:\script\myvb.vbs。
重要说明: 请将自定义脚本放置在安全的文件夹中,以防止进行未授权的访问。 - 脚本超时限制
默认情况下,如果脚本执行时间超过 20 秒,ClonePrep 和 Sysprep 便会终止该脚本。您可以增加此超时限制。有关详细信息,请参阅增加 Windows 计算机上的 ClonePrep 自定义脚本的超时限制。
或者,您也可以指定一个脚本来运行其他运行时间较长的脚本或进程。
- 脚本帐户
ClonePrep 和 Sysprep 用来运行脚本的帐户与 VMware Horizon Instant Clone Agent 服务所使用的帐户相同。默认情况下,此帐户为 Local System。请勿更改这个登录帐户。否则,克隆可能无法启动。
- 进程特权
出于安全原因考虑,从运行自定义脚本的 VMware Horizon Instant Clone Agent 进程中移除了某些 Windows 操作系统特权。脚本将无法执行需要这些特权的操作。
运行脚本的进程没有以下特权:
- SeCreateTokenPrivilege
- SeTakeOwnershipPrivilege
- SeSecurityPrivilege
- SeSystemEnvironmentPrivilege
- SeLoadDriverPrivilege
- SeSystemtimePrivilege
- SeUndockPrivilege
- SeManageVolumePrivilege
- SeLockMemoryPrivilege
- SeIncreaseBasePriorityPrivilege
- SeCreatePermanentPrivilege
- SeDebugPrivilege
- SeAuditPrivilege
- 脚本日志
ClonePrep 和 Sysprep 会将消息写入位于 C:\ProgramData\Vmware\VDM\Logs 的日志文件中。
Sysprep 客户机自定义(使用预先创建的计算机帐户)
您可以使用 Microsoft Sysprep 自定义来置备即时克隆桌面池。在此工作流中,Horizon 将预先创建一些计算机帐户。使用 Sysprep 自定义时,还可以设置关机前脚本和同步后脚本。
- 对于安装在最佳配置映像虚拟机上的某些 Appx 软件包,Microsoft Sysprep 进程可能会失败。您必须手动从最佳配置映像虚拟机中移除这些 Appx 软件包,才能完成克隆置备过程。请参阅 Microsoft 支持网站。
- Sysprep 可能会因为存在挂起的 Windows 更新而失败。为防止出现这种情况,请在最佳配置映像虚拟机上运行 Microsoft Windows 更新,并考虑为即时克隆禁用 Microsoft Windows 更新服务。您也可以查看 Windows 更新页面,以确认没有显示挂起的更新或错误。
- 默认情况下,Sysprep 常规会禁用内置管理员帐户。如果最佳配置映像虚拟机上没有其他用户帐户,并且克隆自定义失败,则用户将无法登录到克隆虚拟机以收集调试信息。尝试以本地管理员身份登录时,用户将在登录屏幕上看到一条消息,指示“您的帐户已禁用。请与系统管理员联系 (Your account has been disabled. Please see your system administrator)”。要解决此问题,请按照 Microsoft 支持站点上的说明在最佳配置映像虚拟机上创建新的用户帐户。
- 可以使用 ClonePrep 或 Microsoft Sysprep 客户机自定义将 vTPM 设备添加到即时克隆。默认情况下,即时克隆智能置备使用模式 B(在没有父虚拟机的情况下创建的克隆)。但是,如果在版本低于 7.0 update 3f 的 ESXi 主机上使用 vTPM 设备,智能置备将选择模式 A(使用父虚拟机创建的克隆)。有关更改置备模式的信息,请参阅知识库文章 81026。
Sysprep 客户机自定义(无需使用预先创建的计算机帐户)
在此客户机自定义中,Microsoft Sysprep 将预先创建计算机帐户,而非 Horizon。如果您的 AD 环境很复杂,并且包含多个站点和数据中心,则可能会遇到知识库文章 https://kb.vmware.com/s/article/2147129 中所述的置备问题。只有一小部分具有多个 AD 站点和数据中心的客户遇到过这个问题。无需使用预先创建的计算机帐户,即可使用 Sysprep 客户机自定义来自动选择 AD 站点,以全局或在池级别创建即时克隆池。在使用新的置备工作流为所有池全局启用该功能之前,可在池级别启用该功能,以便在测试池上测试该工作流。请参阅启用 Sysprep 客户机自定义(无需使用预先创建的计算机帐户)。