我正在尝试创建一个可以从脚本启动的 Windows 2012 sysprep 映像,用于创建自动化测试环境,但发现自己有点困惑。
我的理解是我可以使用以下语法对盒子进行 sysprep:
C:\>sysprep /generalize /oobe /shutdown /unattend:A:\unattend.xml
然后,通过修改适当的 unattend.xml 并将其存储在安装为驱动器 A: 的 FAT12 映像中,服务器将在首次启动期间使用这些修改的设置来设置管理员密码等。
问题是,它似乎不起作用......我怀疑我可能已经完全倒退了。
sysprep 的 /unattend 参数是否告诉 sysprep '嘿,这是你第一次启动时应该读取设置的地方',还是说'嘿,这里有一些设置你应该进入你的 sysprep 状态,然后下次使用它们你开机'?
换句话说,我可以在运行 sysprep 之后但在我第一次启动系统之前修改 unattend.xml 吗?如果是这样,我可以从单独的设备(虚拟软盘驱动器)读取修改后的 unattend.xml,还是需要查找和修改存储在 sysprep 虚拟机映像中的内容?
首先,如果您运行该 sysprep 命令,则您指定的无人参与文件已被缓存以供首次启动时使用。此时更改 A: 驱动器上的文件将没有任何区别。
运行 Sysprep(您指定 /generalize 开关)时使用 Generalize 阶段。如果您使用 /audit 开关,那么当时唯一可能运行的其他传递是 AuditSystem 和 AuditUser 传递。但是,在最终的 Sysprep 运行中不使用 /audit 开关,而是引导到审核模式以进行自定义。
其余的通行证在首次启动时使用。有关详细信息,请参阅 TechNet 文章“配置传递如何工作”。
在首次启动时使用不同的文件可能更具挑战性,因为 Sysprep 在您运行它时会缓存这些文件。TechNet 文章“运行 Windows 安装程序的方法”很好地描述了“显式指定答案文件”和“隐式搜索答案文件”之间的区别。在隐式应答文件搜索顺序表中,它显示了一个注册表项,可用于强制安装程序在首次启动时查看另一个应答文件,但是您必须使用 DISM(已替换 ImageX)安装映像并制作那些离线更改。
您可能希望考虑使用Microsoft 部署工具包(MDT) 进行部署。它是一个基于任务的部署解决方案,可为您创建和使用答案文件。您可以使用您的 sysprep 映像并使用您在任务序列中指定的设置来部署它。多个任务序列可以使用相同的基本映像。还有其他好处,例如管理设备驱动程序和安装软件。MDT 将您手动执行的许多流程自动化。它是免费的。
这是一个很棒的视频,向您展示了 MDT 的强大和简单:
部署日会议 1:MDT 2012 简介
希望这可以帮助,