我的业余爱好是软件开发,为了测试变化、重现错误等,我发现我经常需要一个干净的 Windows 环境来运行我的测试。
我可以启动一个 VM 来执行此操作,但这通常需要找到 Windows 8.1 ISO、创建一个新的 VM、启动它、执行完整安装(查找我的“一次性 VM”MSDN 密钥)、安装我的所有软件等。坦率地说,除了最重要的问题之外,其他任何问题都需要太多的工作。
我无法保留我的 VM 的干净快照,因为我倾向于让 VM 处于未激活状态(无论如何,这是默认情况下发生的情况,并且这是 Microsoft 关于管理 MSDN 密钥上的一次性测试 VM 的建议),并且当我下次使用它时,激活宽限期已过期。
我想做的是创建一个自动化脚本,以便按需构建新的 VM,包括我所有的关键软件。但我发现的大多数部署自动化教程(使用 MDT 或 sysprep)似乎都是针对较大规模的部署。我尝试过 MDT,但似乎很难将自定义软件安装到映像中(例如 Virtualbox Guest Additions)。我也尝试过 sysprep,但无论我做了什么,我最终仍然需要手动执行一些安装步骤。
设置(和维护)自定义安装磁盘和脚本的好方法是什么,可以让我合理快速地运行无人值守的测试虚拟机部署?
(我目前使用 VirtualBox 作为我的软件 - 我可以访问 Hyper-V 并且一直在考虑尝试一下,但我不确定它是否有帮助。我遇到的问题似乎更多地与无人值守安装方面有关,而不是与创建 VM 有关)。
更新一年过去了,我并没有真正找到解决方案。我尝试了 sysprep,但找不到一种方法来管理使用 Windows 更新等保持映像最新(你只能重新运行 sysprep 一定次数,AIUI)。我尝试了 MDT,但它太复杂了,无法满足我的需求。
一个替代方案,我并没有在原始问题中真正提到:我可以使用我的一个 MSDN 密钥来激活我的基本映像,然后根据需要进行克隆。这样可行吗?具体来说,我是否可以“按需”克隆我的基本机器的副本而不会使我的激活失效?如果可以,那么为我想要使用的每个 Windows 版本维护一台激活的基本机器可能是一种更好的方法。这种方法是否存在我没有考虑到的缺陷?我不希望因为尝试这种方法而导致我的密钥失效。
答案1
答案2
我认为使用 sysprep 创建模板是您的最佳选择,但需要进行一些额外的工作来创建完全无人值守的安装。
您可以使用 Windows 系统映像管理器(Windows 评估和部署工具包(可从 Microsoft 免费下载)来创建 unattend.xml,其中可以包含许多选项,这些选项通常需要在 sysprep 之后手动输入,而无需使用自定义的 unattend.xml。如果需要,您甚至可以通过这种方式自动加入 Active Directory 域
在 unattend.xml 中,您还可以指定一个将在最后运行的脚本,该脚本可以处理无法在 unattend.xml 中设置的所有其他操作。
经验告诉我,最后几乎总是需要一个额外的脚本。我发现 PowerShell 是完成此任务的非常强大的工具
这与我创建了几个无人值守的 Windows 安装的方式非常相似,只需单击几下即可完成。为了使 sysprepped 映像在未来的更改中更加灵活,您可以将最后的脚本分成两部分
- 第一部分位于 sysprepped 映像内,由 unattend.xml 调用,用于设置对网络的必要访问权限
- 第二部分从网络下载并由第一部分运行。可以根据需要编辑、更改和扩展第二部分以适应您不断变化的需求,而无需重新创建映像。
答案3
在 XP 时代,有一款出色的工具可以实现这一点,名为 nlite。它已更新并转变为 ntlite,可让您轻松制作这些 slipstreamed iso。https://www.ntlite.com
答案4
如果您不关心更新或针对各种应用程序配置进行测试,则只需使用 Sysprep 即可,并从已关闭的机器创建快照或克隆。然后,您可以在需要全新环境时创建新的克隆或恢复该快照。
MDT 当然更复杂,但它允许您部署最新的测试环境,并允许您维护一个可在部署期间选择的应用程序库。例如,如果有人告诉我他们在使用 Acrobat Reader 9、Java 1.6u17 和 Office 2007 时遇到错误,我可以从库中选择这些应用程序,并在我第一次登录系统进行测试时将它们与 Windows 更新一起安装。