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