本文系IT天空原创文章,未经许可请勿转载,谢谢合作!
3 - 无人值守
3.1 无人值守配置文件
在系统部署过程中,有些选项会等待手动设置,这些选项在批量部署计算机系统时造成了不必要的重复劳动。为了解决这个问题,微软给出了“无人值守应答文件”,将设置项目的“答案”写入此文件后,系统遇到对应选项时会自动使用答案来“应答”,从而无需手动操作,达成“无人值守”。
至NT6代,无人值守配置文件升级为 xml 格式,功能更加强大。
(下面为 ES5 的无人值守应答文件)
- <?xml version='1.0' encoding='utf-8'?>
- <unattend xmlns="urn:schemas-microsoft-com:unattend">
- <settings pass="specialize">
- <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <RunSynchronous>
- <RunSynchronousCommand wcm:action="add">
- <Order>1</Order>
- <Path>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /InDeploy</Path>
- <Description>InDeploy</Description>
- </RunSynchronousCommand>
- </RunSynchronous>
- </component>
- <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <CopyProfile>true</CopyProfile>
- <RegisteredSkyfree>Skyfree</RegisteredSkyfree>
- <Registereditsk.com>itsk.com</Registereditsk.com>
- <TimeZone>China Standard Time</TimeZone>
- <ComputerName>SK-20191031RFBJ</ComputerName>
- </component>
- <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Identification>
- <JoinWorkgroup>WorkGroup</JoinWorkgroup>
- </Identification>
- </component>
- </settings>
- <settings pass="oobeSystem">
- <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <FirstLogonCommands>
- <SynchronousCommand wcm:action="add">
- <Order>1</Order>
- <CommandLine>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /Logon</CommandLine>
- <Description>FirstLogon</Description>
- </SynchronousCommand>
- </FirstLogonCommands>
- <LogonCommands>
- <AsynchronousCommand wcm:action="add">
- <Order>1</Order>
- <CommandLine>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /Desktop</CommandLine>
- <Description>Desktop</Description>
- </AsynchronousCommand>
- </LogonCommands>
- <OOBE>
- <NetworkLocation>Other</NetworkLocation>
- <ProtectYourPC>1</ProtectYourPC>
- <HideEULAPage>true</HideEULAPage>
- <HideWirelessSetupInOOBE>false</HideWirelessSetupInOOBE>
- <SkipMachineOOBE>false</SkipMachineOOBE>
- <SkipUserOOBE>false</SkipUserOOBE>
- </OOBE>
- <RegisteredSkyfree>Skyfree</RegisteredSkyfree>
- <Registereditsk.com>itsk.com</Registereditsk.com>
- <TimeZone>China Standard Time</TimeZone>
- <FolderLocations>
- <ProfilesDirectory>D:\Users</ProfilesDirectory>
- </FolderLocations>
- <UserAccounts>
- <LocalAccounts>
- <LocalAccount wcm:action="add">
- <Name>PCMgr</Name>
- <Group>Administrators</Group>
- <Password>
- <Value>abc123</Value>
- <PlainText>true</PlainText>
- </Password>
- </LocalAccount>
- <LocalAccount wcm:action="add">
- <Name>User1</Name>
- <Group>Users</Group>
- </LocalAccount>
- <LocalAccount wcm:action="add">
- <Name>User2</Name>
- <Group>Users</Group>
- </LocalAccount>
- </LocalAccounts>
- </UserAccounts>
- <AutoLogon>
- <Enabled>true</Enabled>
- <Username>PCMgr</Username>
- <Password>
- <Value>abc123</Value>
- <PlainText>true</PlainText>
- </Password>
- <LogonCount>1</LogonCount>
- </AutoLogon>
- </component>
- </settings>
- </unattend>
复制代码
.xml 文件的基本格式是以标记“<xx>...<xx/>”为一个段(或值),如:
标记也可以写在不同行:
标记还可以嵌套:
- <AutoLogon>
- <Enabled>true</Enabled>
- <Username>PCMgr</Username>
- <Password>
- <Value>abc123</Value>
- <PlainText>true</PlainText>
- </Password>
- <LogonCount>1</LogonCount>
- </AutoLogon>
复制代码
3.2 无人值守配置项浅析
NT6无人值守配置文件的内容主要由阶段和组件两种结构组合而成。
阶段包括 windowsPE、offlineServicing、generalize、specialize、auditSystem、auditUser、oobeSystem。一般而言,generalize=>封装阶段、specialize=>部署阶段、oobeSystem=>OOBE阶段。将组件插入到上述三个阶段中,即可完成对系统部署的无人值守。
那么 ES5 的无人值守配置文件解析如下:
<!-- 封装阶段 -->
<settings pass="generalize">
<!-- Microsoft-Windows-PnpSysprep 组件 -->
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" ...>
<!-- 不清理非当前设备 (驱动) -->
<DoNotCleanUpNonPresentDevices>false</DoNotCleanUpNonPresentDevices>
<!-- 保留所有已安装的设备 (驱动) -->
<PersistAllDeviceInstalls>false</PersistAllDeviceInstalls>
<!-- 当且仅当源计算机与目标计算机硬件完全一致时才将上述二值设置为 true -->
</component>
</settings> <!-- 部署阶段 -->
<settings pass="specialize">
<!-- Microsoft-Windows-Deployment 组件 -->
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" ...>
<!-- 部署中执行的命令或程序 -->
<RunSynchronous>
<!-- 添加一个执行项目 (后续添加时再写一组) -->
<RunSynchronousCommand wcm:action="add">
<!-- 项目的执行顺序, 后续递增 -->
<Order>1</Order>
<!-- 执行的命令或程序 (支持系统环境变量/支持参数) -->
<Path>%SystemDrive%\Sysprep\InDeploy.exe</Path>
<!-- 关于本项目的描述 -->
<Description>InDeploy</Description>
</RunSynchronousCommand>
</RunSynchronous>
</component>
<!-- Microsoft-Windows-Shell-Setup 组件 -->
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" ...>
<!-- 使封装用户的配置成为新建用户的配置默认值 -->
<CopyProfile>true</CopyProfile>
<!-- 注册用户 -->
<RegisteredOwner>Skyfree</RegisteredOwner>
<!-- 注册组织 -->
<RegisteredOrganization>itsk.com</RegisteredOrganization>
<!-- 默认时区 -->
<TimeZone>China Standard Time</TimeZone>
<!-- 计算机名 -->
<ComputerName>SK-20191031RFBJ</ComputerName>
</component>
<!-- Microsoft-Windows-UnattendedJoin 组件 -->
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" ...>
<Identification>
<!-- 加入工作组 -->
<JoinWorkgroup>WorkGroup</JoinWorkgroup>
</Identification>
</component>
</settings> <!-- OOBE阶段 -->
<settings pass="oobeSystem">
<!-- Microsoft-Windows-Shell-Setup 组件 -->
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" ...>
<!-- 首次登录时执行的命令或程序 -->
<FirstLogonCommands>
<!-- 添加一个执行项目 (后续添加时再写一组) -->
<SynchronousCommand wcm:action="add">
<!-- 项目的执行顺序, 后续递增 -->
<Order>1</Order>
<!-- 执行的命令或程序 (支持系统环境变量/支持参数) -->
<CommandLine>%SystemDrive%\Sysprep\FirstLogon.exe</CommandLine>
<!-- 关于本项目的描述 -->
<Description>FirstLogon</Description>
</SynchronousCommand>
</FirstLogonCommands>
<!-- 进入桌面时执行的命令或程序 -->
<LogonCommands>
<!-- 添加一个执行项目 (后续添加时再写一组) -->
<AsynchronousCommand wcm:action="add">
<!-- 项目的执行顺序, 后续递增 -->
<Order>1</Order>
<!-- 执行的命令或程序 (支持系统环境变量/支持参数) -->
<CommandLine>%SystemDrive%\Sysprep\Desktop.exe</CommandLine>
<!-- 关于本项目的描述 -->
<Description>Desktop</Description>
</AsynchronousCommand>
</LogonCommands>
<!-- OOBE设置 -->
<OOBE>
<!-- 网络位置 (家庭Home/工作Work/公共Other) -->
<NetworkLocation>Other</NetworkLocation>
<!-- 获取更新 (全部1/仅重要2/关闭3) -->
<ProtectYourPC>1</ProtectYourPC>
<!-- 隐藏最终用户许可协议页面 -->
<HideEULAPage>true</HideEULAPage>
<!-- 隐藏Wifi设置页面 -->
<HideWirelessSetupInOOBE>false</HideWirelessSetupInOOBE>
<!-- 跳过机器OOBE -->
<SkipMachineOOBE>false</SkipMachineOOBE>
<!-- 跳过用户OOBE -->
<SkipUserOOBE>false</SkipUserOOBE>
</OOBE>
<!-- 注册用户 -->
<RegisteredOwner>Skyfree</RegisteredOwner>
<!-- 注册组织 -->
<RegisteredOrganization>itsk.com</RegisteredOrganization>
<!-- 默认时区 -->
<TimeZone>China Standard Time</TimeZone>
<!-- 文件夹定位 -->
<FolderLocations>
<!-- 用户目录位置 -->
<ProfilesDirectory>D:\Users</ProfilesDirectory>
<!-- ProgramData 目录位置, 注意并不是 Program Files 目录 -->
<ProgramData>D:\ProgramData</ProgramData>
</FolderLocations>
<!-- 用户账户配置 -->
<UserAccounts>
<!-- 本地账户 -->
<LocalAccounts>
<!-- 添加一个账户 -->
<LocalAccount wcm:action="add">
<!-- 账户名 -->
<Name>PCMgr</Name>
<!-- 账户用户组 -->
<Group>Administrators</Group>
<!-- 密码 -->
<Password>
<!-- 密码值 -->
<Value>abc123</Value>
<!-- 密码在当前文件中为明文 -->
<PlainText>true</PlainText>
</Password>
</LocalAccount>
<!-- 再添加一个账户 -->
<LocalAccount wcm:action="add">
<Name>User1</Name>
<Group>Users</Group>
</LocalAccount>
<!-- 再添加一个账户 -->
<LocalAccount wcm:action="add">
<Name>User2</Name>
<Group>Users</Group>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<!-- 自动登录 -->
<AutoLogon>
<!-- 是否启用, 启用true/不启用false -->
<Enabled>true</Enabled>
<!-- 自动登录的账户 -->
<Username>PCMgr</Username>
<!-- 密码 -->
<Password>
<!-- 密码值 -->
<Value>abc123</Value>
<!-- 密码在当前文件中为明文 -->
<PlainText>true</PlainText>
</Password>
<!-- 自动登录次数 -->
<LogonCount>1</LogonCount>
</AutoLogon>
</component>
</settings>
3.3 顺道说一下 WSIM
WSIM(Windows System Image Manager,Windows 系统映像管理器)是微软官方软件,以图形化、模块化的方式快捷的配置 Windows 系统映像的各项功能,最终输出 xml 配置文件。系统部署无人值守配置文件中的项目,只是整个配置文件的子集。
WSIM 的功能繁多,但配备有详细的帮助文档,这里就不再一一赘述了。用于系统封装部署的项目基本上已经在上一节全部解释过了,观众老爷们如果有兴趣的可以看看它们在 WSIM 里所对应的位置。
相关问题
无人值守配置文件放置在哪里?
系统盘:\Windows\Panther\Untitled.xml
WSIM 去哪里下载?
WSIM 是微软 Windows ADK 工具包的一部分
https://docs.microsoft.com/zh-cn ... started/adk-install
需要学习WSIM的所有功能吗?
如同第一章时讨论是否有必要学会 VMware 的所有功能一样,系统封装所用到的功能配置项只是整个 WSIM 配置的一部分,只要掌握了这一部分对我们日常的封装部署操作已经没有太多阻碍了。个人认为实用至上,在有限的时间内将有限的精力用于重点上才能快速提高。
封装时导入无人值守配置文件的方法
如果使用 ES5 这类封装辅助工具,无人值守文件会自动生成并导入。
而如果是手动封装,需要在运行 sysprep.exe 时添加参数 /unattend ,形如:
- sysprep.exe /unattend:D:\Unattend.xml
复制代码
|