巧用SCCM中的导入计算机功能来实现定制化的操作系统部署

巧用SCCM中的导入计算机功能来实现定制化的操作系统部署

微软合作伙伴技术支持-----伊南阳

 

前言

 

在我们通过MDT工具或SCCM系统给客户机部属操作系统时, 常遇到各种各样的需求。有些需求很容易实现, 如自动加域,格式化硬盘,预置管理员密码等。有些功能可能就稍微麻烦一些。 比如,在部署操作系统时, 要求客户能自定义输入计算机名称。 这个要求在MDT的环境下, 很容易实现,但是在SCCM的环境下, 就需要做额外的设置和脚本等, 可以做到在系统部署时提示客户输入计算机名。 通过SCCM和MDT的集成, 也能很好的解决这个问题。

客户需求:

现有一个情景,客户是使用的SCCM2012,管理的机器为学校范围的所有机器, 包括各个教研室老师的电脑, 各个机房的电脑和学校学生的电脑。 对于学生的电脑, 暂不做严格管控, 但是对于各个教研室的电脑和不同机房中的计算机, 要求以所在单位的名称为基础, 在自动部署操作系统时, 按给定的计算机名称自动命名计算机名。 IT人员也有限,无法一台一台去输入计算机名。 例如:

 

IT机房1

机器1号

IT-Lab01-01

机器2号

IT-Lab01-02

机器3号

IT-Lab01-03

 

IT机房2

机器1号

IT-Lab02-01

机器1号

IT-Lab02-02

机器1号

IT-Lab02-03

 

由于IT人员的有限, 并且IT机房这种环境, 不太可能要求IT人员来一台一台的输入计算机名称。 但是为了实现这个目的,我们需要一些信息来做匹配。 在这里我们尝试使用计算机的MAC 地址来做匹配。 我们制作一张对应表,一个MAC地址对应一个计算机名称, 并保存为CSV文件。 但是难点来了, 如何让SCCM在部署系统的过程中, 调用这个CSV文件并依照这个表来自动命名计算机? 脚本看来能解决这个问题。 但是并不是每个IT人员都擅长脚本, 且这个脚本的执行环境是SCCM的 Task Sequence 中, 需要大量的时间和精力来测试完善。 并不是一个简单的工程, 工作量设置会大大超过部署操作系统所需要的时间。

 

在这里我想到了SCCM中的导入计算机功能,刚好可以完美的解决这个问题。真是山重水复疑无路,柳暗花明又一村。 SCCM2012 中的导入计算机功能就是让我们预先导入一部分计算机信息, 让SCCM系统预先“认识”这个计算机,当成已有的计算机来管理。 在这种情况下, 如果计算机信息已经有了, 如MAC地址和计算机名称, 那么这个计算机在SCCM中就是唯一的了。 我们可以对这个计算机所在的集合部署操作系统,操作系统在部署过程中, 把自动根据已有的信息,自动命名计算机为对应的名称。 这是因为操作系统部署的对象不再是未知的计算机, 而是“我们预置的已知的计算机”. 通过这样操作, 这些计算机不管在何时要重装系统都会回到我们预置的状态。

 

测试环境:

测试域: greentest.info

CMSRV1------SCCM 中心管理站点, 站点代码A01

CMSRV2------SCCM 主站点, 站点代码P01

CMSRv3------SCCM 辅助站点

测试的操作系统镜像为Windows 7

SCCM的管理账户为: sccmadmin

SCCM客户端安装和部署时使用的账户为: clientinstall

为了方便测试: sccmadmin 和 clientinstall 两个测试都属于Domain Admins 管理员组。

 

测试目标: 计算机名最终需要被命名为: IT-Lab2-01

 

此处省略安装部署SCCM2012 环境的步骤, SCCM已经做了PXE的启动等准备。大致的步骤分为以下7步:

 

  1. 计算机信息收集
  2. 计算机信息导入
  3. 创建计算机集合
  4. 导入并创建Window 7 的镜像
  5. 创建Windows 7 的任务序列, 并部署到计算机集合
  6. 测试操作系统的部署
  7. 验证部署设置和计算机信息

 

第一:收集计算机信息。

 

用来确定计算机身份的信息可以是: MAC 地址, 或者计算的GUID. MAC比较好获取。 GUID信息可以通过计算机在PXE启动阶段获取。 如下图, 我们在Hyper-V 中创建了一台新的计算机 Test-OSD,MAC地址可以在这个虚拟机的设置里看到。

 

如上两图, 该测试计算机(Test-OSD)已经设置为了从网络启动(PXE), 并且网卡地址(MAC)为:00:15:5D:B2:82:30. 网络配置为SCCM 主站点所属的网络: SysCtr2

 

启动这台虚拟机,我们可以获取这个机器的GUID: A77D12C2-22D1-4537-A529-DD84DF72A56F。

 

注意: GUID 和MAC 地址是至少有一项。

第二:导入计算机信息。

 

这里我们需要创建OSD.csv文件, 分三列填入: 计算机名,GUID, MAC 地址。 如下:

打开SCCM2012 控制台, 点击 Import Computer Information(导入计算机信息)

选择 Import computers using a file. 如果只是某一台计算机, 我们可以选择第二项: Import single computer. 此处为了测试导入csv 文件, 我们选择第一个

导入我们创建的测试OSD.csv 文件

此处, 我们可以看到Import Computer Information 向导工具已经根据CSV 文件, 认出来了计算机名, GUID 和 MAC地址等信息等类别。 如果CSV文件中的信息与默认不相符, 我们可以在这里手动调整每列所对应的信息的类别。 例如我们把MAC地址放在了第二列, 把计算机名放在了第三列等。

 

点击Next , 会显示导入的具体信息。 此处我们做测试, 只有一台的信息, 所就只显示一个。

接下来会提示把这些计算机加入到某个集合或默认放在所有计算机集合(All System)里面. 我们并没有提前创建计算机集合, 这里选择默认。

总结前面的设置和导入信息:

点击Next , 导入的过程很快。 下面是导入操作成功的提示。

此处, 计算机信息导入成功。

我们回到SCCM2012 的控制台, 可以看到新的计算机已经被列在里面了。 但是这个计算机其实还没有部署, 还在裸机状态。在SCCM中, 计算机IT-Lab02-01, 客户端的状态是No, 活动状态没有信息。下面的计算机详细信息也是空的。

第三:创建计算机集合。

我们在上面的步骤中, 成功的添加了计算机 IT-Lab02-01的信息到SCCM中。 下面, 我们创建一个计算机集合: IT-Lab02, 代表我们测试中的IT机房.

 

打开SCCM2012 的控制台, 如图所示, 右键点击 Device Collections(设备集合), 选择 Create Device Collection(创建设备集合), 然后输入集合名称: IT-Lab02. 

因为后面准备直接把相对应的计算机IT-Lab02-01添加到这个集合,所以这里不选任何的添加规则,并收到如下的警告。 实际环境中, 推荐这样操作。

再次确认信息, 一路Next 完成操作。

完成后, 可以在SCCM控制台—设备集合中看到新创建的设备集合:IT-Lab02. 客户端成员数量是0.

如下图所示, 在设备中选中我们导入的计算机: IT-Lab02-01, 右键选择 Add Selected Items(添加选择项), 然后选择 Add Selected Items to Existing Device Collection(添加选择项到现在的设备集合)。

添加到前面创建的设备集合:IT-Lab02

等一会儿, 系统后台完成操作后, 我们可以查看设备集合IT-Lab02的状态和成员, 可以看到计算机IT-Lab02-01 已经出现在集合IT-Lab02里面了:

到此, 创建集合过程全部结束。

第四:导入并创建Windows 7 的镜像。

 

此处, 便于测试, 我们已经创建好了一个Windows 7 32bit 的镜像, 如下图所示:

已经成功把这个镜像分发到CMSRV2 和CMSRV3两个分发点上了

第五:创建Windows 7 的任务序列, 并部署到计算机集合。

 

如图, 右键点击 Task Sequence (任务序列), 选择: Create Task Sequence(创建任务序列)

依照下面的步骤创建任务序列

注意: 确认把boot images 分发到相对应的分发点上。

设定自动加入域greentest.info, 使用账户为 clientinstall。 加入到的OU是Computers, 也可以不填(计算机加入域时,默认OU是Computers)。

默认会安装SCCM的客户端程序包。

因为是全新安装, 所以不需要任何的捕捉设置, 全部取消选择。

为了加速测试, 我们这里不选择安装更新。 实际环境, 可以考虑安装更新。

在安装部署程序(已经在SCCM系统中部署过的程序), 选择了7-Zip 这个软件, 以便部署完成后验证效果。

确认设置, 然后Next.

创建Windows 7 32Bit的任务序列执行完毕。

SCCM控制台里也可以看到我们创建的Windows 7 任务序列。 如果要调整任务序列, 加入一些更高级的设置等, 可以选择编辑这个任务序列, 添加, 删除或更改里面的步骤。在此, 我们不做更改。

右键点击Windows 7 32Bit 任务序列, 选择Deploy(分发)

下面一步至关重要。 我们需要把这个任务序列部署给集合 IT-Lab02, 而不是像已往一样部署给未知计算机集合。

类型选为Available(可选), 确保选的方式里有PXE 这一项。

其他选项默认, 一路Next, 直到完成。

至此, 在SCCM上的部署操作全部完成。

 

第六:测试操作系统的部署。

 

我们打开虚拟机Test-OSD, 启动。 它会从PXE处获取引导信息。 如下:

按F12 键,从PXE启动, 加载WinPE 的镜像进行引导。

由于在PXE设置里取消了密码设置, 所以这里的密码框会是灰的, 默认可以进入下一步

选择部署的Window 7 32 Bit 这个任务

任务序列开始格式化磁盘

从分发点加载操作系统镜像到本地

应用操作系统镜像到本地磁盘

加载相对应的驱动

应用计算机设置

加载SCCM客户端的安装文件

任务序列执行完毕, 系统重启

系统启动开始初始化

由于我们之前在任务序列里没有输入相对应的key, 所以这里会跳出提示输入key, 需要人工干预, 选择跳过。

初始化配置并且安装配置SCCM的客户端

安装预置的软件7-Zip

系统安装部署完成,

第七:验证部署设置和计算机信息。

 

最后, 我们在这台测试机上登录域账户 user1. 查看当前的系统信息。 默认域已经为Greentest了, 说明机器已经成功加入到域greentest.

查看系统信息, 我们可以看到计算机名为: IT-Lab02-01. 说明我的部署成功, 客户机器基于我们的配置, 成功的配置了计算机名。

同时, 在SCCM控制台中, 我们可以看到这台计算机的客户端状态是: Yes。 另外, 客户端的活动状态也是活动的。

至此, 我们的整个部署完成。

总结

 

通过以上的方式, 我们在有类似需求的情景下, 可以大大加速操作系统的部署, 简化IT人员的工作量。 我们只需要在项目前期把所有的计算机信息收集一下, 例如只收集MAC地址和计算机名称, 做成CSV文件即可。 在部署时, 不需要编写脚本, 也不需要和MDT做集成,对环境的要求也相对简单。