根据您的企业规模,Windows 7 的部署可能非常简单,也可能非常复杂。Microsoft 自身的 Windows 7 部署任务就比较复杂。
System Center、Configuration Manager 2007 的操作系统部署 (OSD) 功能和即将发布的 Service Pack 2 (SP2) 可大大简化部署过程。无论您企业的复杂程度如何,都可使用 Microsoft 蓝图尽早将您的企业移至 Windows 7。
本文介绍 Microsoft 团队如何在我们自己的企业中部署 Windows 7。具体内容包括我们如何开发自己的 Windows 7 部署解决方案,以及您如何使用同样的工具来简化自己的部署
了解企业桌面部署方案
第一步当然是评估完成新操作系统的大范围分发应满足的要求以及所需的方案。与交付到桌面的应用程序不同,操作系统会给用户的工作效率和数据带来重大风险。因此,您常常会花大量时间力图确定相关事务的当前状态,并在寻找非常好的迁移点的同时尝试将风险将到最低。Microsoft 的部署目标是 280,000 多台台式计算机,因此困难程度尤甚。
图 1:企业桌面磁盘配置方案
开发企业桌面解决方案时,首要领域为硬盘配置、加密技术、应用程序和用户数据(虽然硬件设备驱动程序也是部署中重要的一方面,但不在本文介绍范围之内。以下 TechNet 博客文章概述了由我们开发的解决方案,该解决方案可以简化 Microsoft 自身硬件的驱动程序:tinyurl.com/kog748)。
桌面配置无论涉及一个还是多个磁盘,在用 Configuration Manager 部署 Windows 7 时都十分重要。难点在于要确定是仅将 Windows 7 部署到新计算机上,还是通过迁移过程部署到已经有操作系统的计算机上。如图 1 所示,我们必须为 Microsoft 开发一个解决方案,通过该解决方案处理包含若干分区的单个磁盘,或处理涉及多重引导和多个磁盘的复杂配置。
Microsoft 的许多台式计算机运行的都是 Windows Vista,并且一些业务组按要求使用在 Vista 中引入的 BitLocker 加密技术。BitLocker 可对系统分区进行加密和保护,以防数据被盗或丢失。若要升级在加密驱动器上运行的操作系统,任务序列必须将加密禁用或挂起。大多数移动环境都需要加密,因此为这些环境开发任何解决方案时都必须考虑加密的情况。
在每个企业中进行迁移都有一个毋庸置疑的起码要求,即迁移过程中不能丢失用户数据。Microsoft 为 Windows 用户提供了用户状态迁移工具包 (USMT),用于简化用户数据的收集和还原。Windows 7 引入了下一代 USMT(版本 4.0),该版本与上一版本相比有很大改进。USMT 3.0 与版本 4.0 的主要差异在于我们方案最后一部分的侧重点:选择收集用户状态的正确过程以及保存该状态的方法。
与以前的版本不同,USMT 4.0 在整个操作系统之外运行。在收集用户状态以便在升级后进行还原时,整个操作系统会在多方面提出挑战,因为文件常常处于使用或锁定状态;而且,类似防病毒解决方案等其他一些应用程序可能会导致对其数据的备份操作失败。在 Windows Pre-Execution (PE) 等环境中,新版本数据收集过程在整个操作系统之外运行,这将大大减少运行中的服务数、使用中的应用程序数以及其他涉及开放用户数据的情况。从 Windows PE 加载用户状态的功能(通过脱机备份功能)与在 Windows PE 中运行的 Configuration Manager OSD 任务序列可以很好地配合,从而简化了用户数据的备份过程。
USMT 收集到必要的用户数据之后,需要在迁移过程中将该数据“存储”于某处。Microsoft 对于在何处存储其用户数据有众多选择,但相同的选择范围可能并不在许多其他企业的 IT 预算之内。例如,我们假定典型的 Microsoft 用户状态数据量约为 1GB。可以选择用于存储此数据供以后检索的介质包括外部硬盘、文件服务器和光驱(例如 DVD)。对于使用 Configuration Manager 2007 的企业,可在执行迁移时通过状态迁移点功能将这些数据存储在远程服务器上,但这种做法仍有一些局限性。
“外部”设备不够经济划算的关键原因在于,它要求您拥有与用户状态数据量相当的物理存储空间。因此,在 Microsoft,我们需要 280TB 可用空间来支持我们的用户群。这种方法只在能够准确测量用户数据量时才可行。否则该过程就缺乏科学性,而且可能产生不可预知和不能令人满意的结果。
最后的选择是使用即将进行迁移的计算机。这种选择似乎最符合逻辑并且最经济划算,但却通常在技术方面面临难题。它要求用户的计算机上有大量可用空间用以备份他们的数据;还涉及到将用户数据从磁盘的一个位置复制到另一个位置。正如大多数有经验的 IT 界人士所知,将任何文件移动或复制到硬盘上都比较耗费时间,并进而导致部署时间过长。占用用户一天(甚至多天)工作时间进行部署显然是行不通的,而且这还意味着您需要面对自己并不愿意承担的风险。
USMT 4.0 引入了对硬链接的支持,以前的所有版本中都没有此功能。通过硬链接迁移,可在本地将用户数据有效存储在同一台计算机上,因而只需很少的时间和磁盘空间。
使用硬链接的唯一要求是用户的计算机必须拥有 250MB 可用空间。有了硬链接支持功能,无需移动磁盘上的物理文件即可进行备份和还原。USMT 只存储指向物理文件的指针,并在还原时使用这些指针,从而大大降低迁移 Windows 7 所需的时间(有关硬链接的更多信息,请参阅位于以下位置的 TechNet 文章:tinyurl.com/m76dxv)。
了解各种方案有助于您制定行动计划,以便在迁移到 Windows 7 时处理这些方案。
构建 Windows 7 的操作系统任务序列
一旦了解了要求和方案,实现解决方案就变成了一项简单直接的任务。构建解决方案的步骤主要分三类:
最终用户体验
构建 Windows 7 任务序列
用户状态迁移
Microsoft 的 IT 部门开发了一个代号为“Modena”的解决方案,该解决方案通过强大的 OSD 向导支持第一类步骤,通过导出任务序列支持第二类步骤,通过状态迁移脚本支持第三类步骤。下一部分将概述如何使用 Modena OSD 工具(包括 OSD 向导)、导出的任务序列以及脚本。
使用 OSD 向导
Configuration Manager 的 OSD 是为 IT 管理员设计的。因此,OSD 不提供内置的向导。这意味着大多数企业都必须开发自己的向导。简言之,Configuration Manager 没有提供用于收集最终用户输入信息的现成功能 — 这是 Microsoft 自己也面对过的挑战。
Microsoft 是一家用户驱动型企业;所有用户都像管理员一样进行操作。
许多人对 Microsoft IT 部门影响他们使用操作系统全部功能的决策表示不满。因此,Microsoft 不得不开发一种非常稳固的用户体验,从而在不影响和限制用户工作能力的情况下从用户获取尽可能多的数据。
Modena OSD 向导为 Microsoft 弥合了这一缺口,而且同样适用于您的企业(有关获取 OSD 工具的信息,请参阅我们在 blogs.technet.com/osd 上发表的博客)。
Modena OSD 向导有两个组件:一个可执行文件和一个配置文件。可执行文件“OSDSetupWizard.exe”由 Microsoft 编写,可提供独立的用户体验。该文件用于验证计算机是否已准备好进行 Windows 7 迁移,并可以收集最终用户输入信息。该向导的最终作用是获取用户输入信息并设置 OSD 任务序列变量。
该向导的一个主要特点是工作方式与“即插即用”功能非常相似,从而能够适用于尽可能多的方案。它通过配置文件实现该目标。实际上,在 Microsoft 等复杂环境中,可通过开关 /xml:{osdconffilename.xml} 将同一可执行文件用于各种不同的配置文件。
例如,在需要同时支持“运行播发程序 (RAP)”和“预启动执行环境 (PXE)”的 Microsoft 部署中,使用了相同的任务序列,但该向导根据其运行环境(RAP 或 PXE)使用两种不同的配置文件以不同的方式执行。这样既可创建一个通用的部署包,又允许使用各种支持该部署包的配置。
为了介绍 OSD 向导,让我们首先了解一下它提供的最终用户屏幕(也称为“页面”)。OSD 向导将显示 8 个页面。但这种说法并不严谨,因为每个页面又有以下三种状态之一:启用、禁用和无提示。如果启用某页面,则向最终用户显示该页面;如果禁用某页面,则不显示该页面。
“无提示”是一种特殊情况。这种情况下不显示相应页面,除非 OSD 任务序列变量为 null。如果该变量为 null,该页面将提示用户进行输入,使向导继续进行(有关 OSD 向导的启用、禁用和无提示功能的更多信息,请参阅位于 blogs.technet.com/osd 的博客文章)。某些情况下需要最终用户在特定页面上输入数据,但也有其他一些数据不需要输入。
例如,许多企业都允许最终用户提供其自己的计算机名称,但不允许他们选择其 Active Directory (AD) 域或组织单位。可轻松调整 OSD 向导,从而允许您显示向导页,但不允许用户更改特定输入(例如域和组织单位)的内容。这种有用的锁定功能适用于配置文件中的大多数页面。
除了禁用和锁定功能之外,有些页面还有可更改向导内部行为的其他属性。向导功能可自动检查 AD,查看某计算机名称是否已在使用中,或者用户凭据是否有效。对于含有其他属性的页面,您可通过值来启用或禁用这些功能,而无需对向导进行重新编译。
OSD 向导的所有 8 个页面都根据各自提供的功能进行命名:Welcome(欢迎)、Pre-Flight(预检)、Computer(计算机)、Network(网络)、Language(语言)、Volume(卷)、Application(应用程序)和 Summary(摘要)。我们来探讨一下这些页面中的某些页面提供的关键功能,并讨论如何使用这些功能。
可为向导提供唯一的标记,使之与您企业的典型 IT 标记相匹配。通过配置文件,将位图名称放入标题属性,也可轻松完成标记。若要重新标记向导以使之匹配您的环境,只需创建大小为 630x100 的位图图像,再将该图像添加到 OSD 包,然后编辑配置文件即可(有关标记的更多信息,请参阅位于 tinyurl.com/r7jdve 的 TechNet 博客文章)。
OSD 向导最强大的功能之一是允许您嵌入自己的预检功能,可在迁移到 Windows 7 之前执行该功能。例如,假设您的公司有一个人力资源应用程序,而该应用程序与 Windows 7 不兼容。为了尽量不影响用户工作,您可以创建一个脚本,并添加 OSD 向导预检功能,以检查是否安装了该应用程序。您可以根据该项检查的结果,决定允许相关用户继续进行迁移还是警告他们存在不兼容的应用程序。
目前,OSD 向导有两个内置的预检功能,您可通过配置文件来启用或禁用它们。提供这两个特定的预检功能是因为它们适用于大多数企业。第一个预检功能是电源检查,该功能在完整操作系统中执行(例如,当用户使用 RAP 或添加/删除程序进行迁移时),并在用户未使用交流电运行的情况下返回错误通知。如果该预检功能检测到用户尚未插入交流电源,则将返回错误通知,要求用户插入交流电源适配器。完成此操作后,用户可单击“Retry Pre-Flight Checks”(重新尝试预检并继续),若再无错误则继续操作。
第二个内置预检功能是无线检查。OSD 是比较占用带宽的进程,插入以太网适配器(例如,802.3 有线连接)后运行效果非常好的。如果无线预检功能检测到用户尚未插入该适配器,则将返回错误通知,直至用户建立有线网络连接。
但是,预检功能并不限于内置检查功能。它支持任何可执行文件或 Windows Scripting Host 脚本,例如 Visual Basic 脚本。预检功能的数量没有限制,只要这些功能在 5 分钟之内执行并完成即可(如果超时,OSD 向导将停止执行脚本)。
图 2:OSD 向导
每执行一次脚本或可执行文件,就有一个代码返回到 OSD 向导进程。根据向导的配置,它将返回“Success”(成功)、“Warning”(警告)或“Error”(错误)状态通知(请参见图 2)。如果返回“Success”(成功)或“Warning”(警告)通知,用户可以继续完成向导的其余步骤。但如果返回“Error”(错误)通知,将阻止用户继续操作。从预检脚本或内置脚本返回的可接受代码可在 osdconf.xml 中进行配置,而且无需更改向导的可执行文件。除此之外,还可以配置对错误的文本描述。
有两种方法可将应用程序作为 Windows 7 部署的一部分进行交付:作为基本 Windows 7 Windows 安装映像 (WIM) 的一部分,或作为单独的任务序列步骤。Windows 7 WIM 映像中包含的应用程序应当是大多数最终用户都需要但不经常更新的应用程序。此方法主要有两个缺陷。首先,映像会增大,这通常会影响其下载到客户端的时间;另外,还需要对映像进行管理。每次更新应用程序时,WIM 映像就会要求您创建新的安装映像,并需要更新与基本映像相关联的 Configuration Manager 软件包。
图 3:OSD 向导应用程序选择
因此,Modena 工具与 Configuration Manager 2007 安装软件应用程序功能很好地集成在一起,使最终客户能够选择要在 OSD 进程中安装的应用程序(有关更多信息,请参阅位于 tinyurl.com/pdfp5s 的 TechNet 文章)。如图 3 所示,应用程序完全根据您在 OSD 向导配置文件中的设计列在树状视图中。例如,您可以按业务部门、位置或应用程序类型来定义应用程序组,然后定义该组的所有应用程序和默认选择。这使更改或添加应用程序变得十分容易,唯一要求是应用程序要打包并可在 Configuration Manager 2007 数据库中使用。
此外,该向导的主要用途是使用户能够提供影响其 Windows 7 映像的最终结果。对于不需要很多用户输入的环境,可将向导配置为尽可能少地询问信息;其余信息由管理员在任务序列中进行硬编码。
丢失数据:绝不可以
USMT 4.0 包含一组基本的配置文件,这些配置文件能够捕获许多企业的用户状态。这些配置文件,即 MigApp.xml 和 MigDocs.xml 涵盖了用来捕获用户数据的大多数方案(有关配置文件的更多信息,请参阅位于 tinyurl.com/okfgw4 的 TechNet 文章)。
OSD 将对安装 Windows 7 的卷进行清理。因此,每次使用 OSD 时适当、准确地捕获用户状态极其重要。简言之,绝不可以丢失数据。
非常好的做法是通过任务序列步骤创建一个安全的位置,将其用作用户状态的目标文件夹(这也是 Microsoft 采用的做法)。然后,使用名为 OSDStateStorePath 的 OSD 内置任务序列变量,可在通过该任务序列中的 Apply OS 步骤执行卷清理时排除此目录(若要学习如何完成并充分利用此功能,请参阅位于 blogs.technet.com/osd 的 TechNet 博客文章)。
构建用于 Windows 7 部署的任务序列
Modena OSD 工具中包含 Microsoft 使用的 OSD 任务序列的导出副本。导出的任务序列分为几个组,在根部以名为“Master Group”(主组)和“Failover”(故障转移)的子项开始。“Master Group”拥有与 Windows 7 部署中使用的各主要步骤相关联的子项。每个子项(请参见图 4)都有错误条件,这些错误条件将错误返回到“Master Group”(主组),然后“Master Group”(主组)再将该错误转发给名为“Failover”(故障转移)的专用步骤。
将任务序列分为这些步骤可使日志记录、报告和错误处理容易得多。与任何其他同类操作一样,无论您花多少时间进行准备,还是会出现错误 — 这正是““Failover Group”(故障转移组)存在的原因。此组旨在收集排除安装故障所必需的所有相关日志文件,并将它们放入 OSD 安全文件夹。
若要在任务序列中实现一定的容错能力,可从根级别开始创建两个子组:“Master Group”(主组)和“Failover”(故障转移)。另一种非常好的做法是让“Master Group”(主组)包含部署中所需的所有工作步骤,并将该组用作在出现错误时继续操作的指定组。每个子组都需要继续执行任务序列,且应设置为在出现错误时停止操作(如图 4 所示,Microsoft 的情况是“Master Group”(主组)包含五个嵌套组)。
图 4:任务序列分组
另一种非常好的做法是将对部署没有灾难性影响的所有子组设置为在出现错误时继续操作。OSD 任务序列引擎总是通过检查其父级组来决定发生错误时要采取的操作,以确定是否应当继续操作。因为存在这种行为,所以您应定义每个步骤在出现错误时应停止还是继续。如果未将步骤设置为在出现错误时继续,则任务序列将访问其父级组,确定下一步要执行的操作。在图 4 的设计中,“Master Group”(主组)被设置为在出现错误时继续,以便它执行同级的“Failover Group”(故障转移组)。
例如,假设已创建一个组用来捕获用户状态。由于此组中的步骤的重要性,每个步骤的设计都要确保在发生错误时不再继续执行部署,继续执行可能会将卷删除(假设这就是任务序列中的下一步)。在这种情况下,任务序列引擎将确定是否将执行步骤设置为出现错误时继续;如果不是这样,它将回到该步骤的父级组,来确定下一步要执行的操作。未选中“continue on error”(出错后继续)的“Backup State”(备份状态)父级组将回到其父级组,在此设计中为“Master Group”(主组)。
如前所述,“Failover Group”(故障转移组)的目的是确保捕获进行故障排除所需的全部数据。须将此组设置为“Master Group”(主组)的同级,以便由“Master Group”(主组)在出现错误时引用(请参见图 4)。除非在部署过程中出现灾难性故障,否则永远不会运行“Failover Group”(故障转移组)。因此,它是任务序列中的最后一步,如果安装不成功就总会运行。
部署的状态取决于 _SMSTSLastActionSucceeded 变量中存储的值。这就是任务序列引擎贯穿任务序列“树”直至最终完成的过程 — 在本例中意味着执行“Failover Group”(故障转移组)步骤,收集所有日志和所需数据,然后失败(有关对此进行设计的更多信息,请参阅位于 blogs.technet.com/osd 的 TechNet 博客文章)。
使用位图和 BGInfo.exe 提供用户状态
在 Microsoft,让用户了解他们在迁移过程中处于 OSD 的什么位置是十分重要的。默认情况下,所有基于客户端的状态都是通过 Configuration Manager OSD 功能进行传达的。虽然这些状态消息适用于某些企业,但在告知用户有关组成迁移过程的较大步骤方面,还有其他一些创造性方法。
第一步是了解伴随迁移过程的较大步骤都有哪些。例如,这些步骤可以是驱动器分区、Windows 安装和最后的应用程序安装。这样做的主要原因在于,这些步骤可为用户提供总体进度的宏观定义,而用户又比较喜欢这类信息。
Microsoft 使用的 5 个主要步骤为:备份状态、安装 Windows,设置 Windows、安装应用程序和还原状态。用户通过用 TechNet Sysinternals 工具 BGInfo.exe 动态呈现的静态位图来接收信息(可从 tinyurl.com/2nbxmd 下载 BGInfo.exe,Modena OSD 工具中也包含该工具)。此工具在调用时允许加载静态位图,也允许您设置反映迁移当前位置的位图。
Modena 提供 5 个位图,每个位图对应一个步骤,这些表示状态的图像通过任务序列进行设置。例如,在任务序列组“Install OS”(安装操作系统)中,调用了 BGInfo.exe 来加载代表此步骤的位图(请参见图 5)。
图 5:显示状态
Modena OSD 工具为您提供了在企业中对此进行部署的框架,您只需对位图进行替换即可。为此,请找到脚本文件夹、打开 BG 目录并用已更新的图像版本替换每个位图图像。这样即可告知最终用户部署 Windows 7 要使用的 5 个主要步骤。这是让用户随时了解最新进度的一个好方法,使他们不必阅读 OSD 任务序列引擎提供的详细步骤。
总结
Windows 7 现已向企业提供,但由于所涉及的迁移过程比较复杂,许多企业尚未开始其升级项目。在 Microsoft,此过程始于大约一年前;我们几乎已全面掌握了这一过程,但该过程还远未完善。
Windows 7 可为最终用户提供最高的工作能力和性能。最后,唯一的障碍就是将部署工作做好。Microsoft 可为 System Center Configuration Manager 2007 用户提供 Modena OSD 工具,用以缩短部署工作的准备时间并降低复杂性。无论您的企业需要与最终用户进行高度的互动,还是依赖于“最少的接触”,您都可使用我们在 Microsoft 使用的相同过程优化您的 Windows 7 项目。