 TechNet Magazine August 2007

TechNet Magazine August 2007

System Center: SMS 改进：用于管理系统的功能强大的新解决方案

系统管理将会变得更简单。获取 System Center Configuration Manager 2007 的指导教程，了解它如何简化关键任务，如部署软件更新、管理移动设备以及维护系统配置。

John Orefice System Center: 对分支机构部署应用程序和更新

分支分发点是 Configuration Manager 2007 中的一项新功能，初看上去不过是一项不起眼的新增功能。但如果深入研究一下，就会发现，对于管理面向分支机构的软件分发，它提供了不可或缺的新功能。

Steve Rachui System Center: System Center Essentials 2007 入门

System Center Essentials 专为中型企业设计，可为监控和管理系统以及对系统进行故障排除提供统一的解决方案。下面将详细指导您为网络安装和配置 Essentials 2007。

David Mills System Center: 关注带有 Operations Manager 2007 的服务器

Operations Manager 2007 是 MOM 的最新产品，它引入了一些主要的改进，包括新管理界面、更好的报告功能以及对行业应用程序、新安全选项及更多内容的支持。

Pete Zerger System Center: 从 MOM 迁移到 Operations Manager 2007

准备好切换到 Operations Manager 2007 了吗？由于体系结构的更改，没有从 MOM 的早期版本的简单就地升级途径；因此，请遵循此处提供的迁移计划之一。

Andy Dominey System Center: 使用 Microsoft SoftGrid 虚拟化应用程序

虚拟化的应用程序有很多优点，从改善用户体验到简化系统管理，无所不包。您可以获取有关以下内容的详细概述：Microsoft SoftGrid 如何提供虚拟应用程序，如何适应您的基础结构，以及如何为您的公司节省时间和金钱。

Ahmer Sabri and Kedar Shah 编辑视角: 动态与优化

Joshua Trupin 工具箱: 面向 IT 专业人员的新产品

Greg Steen SQL 技术问答: 查找锁、大型查询、I/O 统计信息等

Edited by Nancy Michell 实用工具特别推荐: BGInfo

如果能够在一个位置了解所有需要了解的有关 PC 的信息（它的名称、IP 地址、网关、可用磁盘空间等等），那岂不是很棒？使用 Sysinternals 提供的以下免费工具，您就可以做到。

Lance Whitney 网络专家: Windows Vista 中的 IPv6 自动配置功能

IPv6 不仅可以将地址空间从 32 位扩展到 128 位，还具有很多其他功能。本文介绍即使在不使用地址配置协议的情况下，IPv6 主机如何自动进行自我配置。

Joseph Davies Windows PowerShell: 筛选的力量

管道不仅仅适用于 cmdlet。看一下如何使用 Windows PowerShell 管道来将便利的筛选功能添加到脚本中。

Don Jones 您好，脚本专家！: 您是谁？

使用 Active Directory，用户可以拥有多个身份，如 givenName、displayName、userPrincipalName 或 distinguishedName。作为系统管理员，您如何获取关于用户的所有此类信息？当然是使用脚本了。

The Microsoft Scripting Guys 安全观察: Windows 中的 PKI 增强功能

在 Windows Vista 和 Windows Server 2008 中，Windows PKI 平台支持高级算法、实时有效性检查和更好的可管理性。查看新增的 PKI 功能，了解如何使用这些功能在改进安全性的同时降低成本。

John Morello 桌面文件: 初识 RDP

远程桌面协议是一项适合与所有版本的 Windows 配合使用的有用技术，它允许您远程访问计算机。大致了解远程桌面，并了解它带来的许多优点及限制。

Wes Miller 领域备注: IM 访谈

您有一个职位空缺，并且收到了来自世界各地的大量简历。如何快速缩小搜索范围？通过 IM 进行面试可帮助您解决此问题。这里是一位开发人员的成功故事。

Nathan G. Jensen Windows 机密: Windows 资源管理器不管理文本

为什么您不能在 Windows 资源管理器中复制文件列表，然后以文本的形式进行粘贴来获取文件名称呢？Windows 团队曾尝试包含此功能，但事与愿违，未能达到预期效果。

Raymond Chen


 System Center: SMS 改进：用于管理系统的功能强大的新解决方案
System Center John Orefice

SMS 改进：用于管理系统的功能强大的新解决方案
概览:
  • 操作系统部署
  • 软件更新管理
  • 所需配置管理

Systems Management Server (SMS) 2003 已成为面向全球管理员的重要配置管理和软件交付工具。现在 Microsoft 正在准备
引入新版的企业管理解决方案，该新版本采用了新功能和新名称：System Center Configuration Manager 2007。
System Center 是一系列 Microsoft 产品，旨在相互协作使复杂 IT 基础结构的日常管理变得更加容易、更加经济高效。System Center 解决方案基于从 Microsoft® Operations Framework (MOF) 和信息技术基础结构库 (ITIL) 派生的自动化和最佳实践，并可用于组织的所有级别。
Configuration Manager 2007 只是 System Center 系列的一部分。System Center Data Protection Manager 提供企业系统备份和恢复。System Center Operations Manager 为您提供前瞻性的系统监视和自动化。System Center Capacity Planner 可用于容量规划和基础结构部署的假设性分析。此外还有很多相关信息（有关更多信息，请查看 www.microsoft.com/systemcenter）。
在本文中，我将基于最近的试用版本向您逐步介绍 Configuration Manager 2007 规划的若干新增功能和增强功能。我将大致介绍这个令人兴奋的版本将为您提供的功能，并且我希望您考虑一下 Configuration Manager 是如何实现节省您的组织的时间和资金的。

新的管理用户界面
自 SMS 1.0 以来，SMS 中请求最频繁的新功能之一是新增和改进的用户界面。Microsoft 通过对 System Center Configuration Manager 2007 管理用户界面进行几处改进回应了该请求。为了启用这些新增功能，Configuration Manager 2007 中的新控制台要使用 C# 和 Microsoft .NET Framework 构建，并在 Microsoft 管理控制台 (MMC) 3.0 技术的基础上运行。此外，与 SMS 2003 相同，该用户界面可以通过 SDK 进行扩展，因此控制台的用户可以创建自己的加载项以满足其个人需求。
图1 显示的是展开了“计算机管理”节点的新控制台，该图描述了所有可用的新管理功能。此外，请注意“SMS 站点配置”部分的新外观，该部分简要介绍了安装 Configuration Manager 后为了使其能够正常运行需要完成的常见任务。“链接和资源”部分包含相关的任务，用于缩短通过该控制台导航到常见功能所需的时间。
图 1 Configuration Manager 管理界面
图 1 Configuration Manager 管理界面
新控制台提供的一些好处和功能包括：多项选择和拖放（非常适用于集合管理）；搜索文件夹，用于在控制台中虚拟而不是实际组织项目；“操作”窗格，用于执行适合当前部分的任务；“预览”窗格，用于查看特定项目（例如操作系统映像）的摘要信息；主页，用于概述有关特定主题（如软件部署）的摘要信息；以及改进的组织结构，用于极大地简化导航。
如前面所述，“操作”窗格是新改进的控制台中的主要增强功能之一。它提供了一种查看操作的方法，这些操作与您当前正在使用的控制台部分上下文相关。例如，如果您正在查看“所有系统”集合，“操作”窗格将显示“更新集合成员”和“安装代理”等操作（请参见图 2）。
图 2 可用操作特定于当前的视图
图 2 可用操作特定于当前的视图
此外，Configuration Manager 2007 还引入了一个名为主页的新概念，它可使您非常快速地查看特定功能（如软件更新、软件分发或所需配置管理）的状态。您可以在控制台中进行查看，而无需运行报告或从其他地方查找数据。在本文中还提供了主页的更多示例，我在介绍该产品的其他功能时会涉及到这些示例。

服务器角色和分发点
Configuration Manager 2007 引入了几个新的服务器角色，它们实现了几项新功能，我将在此进行介绍。新增的服务器角色包括备用状态点 (FSP)、PXE 服务点 (PSP)、分支机构分发点 (DP)、状态迁移点 (SMP)、软件更新点 (SUP) 以及系统健康验证器 (SHV)。与所有 SMS 和 Configuration Manager 服务器角色一样，只要执行适当的容量规划操作，就可以在同一服务器上承载这些角色。
分支机构分发点非常重要且与传统的分发点不同，这表现在两个方面。第一，它无需安装在服务器操作系统上 — 可以安装在 Windows Vista® 或 Windows® XP 上。它是唯一可安装在客户端操作系统上的 Configuration Manager 角色。这非常适合不具备本地服务器的分支机构或 IT 部门希望从较小的分支机构中删除服务器以节省资金并减少管理开销的情况。在只具有运行 Windows XP 或 Windows Vista 的计算机的情况下，可以使用分支机构分发点，通过确保在程序包可以从本地获得时客户端不会通过 WAN 提取程序包来减少 WAN 通信量。
分支机构分发点区别于标准分发点的第二个方面是它与其他分发点的连接。传统的分发点复制数据没有任何限制，也不按计划进行，除非是从主站点进入辅助站点。因此，许多组织只在夜间将程序包复制到分支机构，从而延迟了软件分发，直到这些程序包在本地可用。
分支机构分发点使用后台智能传输服务 (BITS) 从其他分发点下载信息。这对于限制分支机构和中心数据中心中分发点之间的 WAN 链路带宽很有效，尤其是分支机构不存在 Configuration Manager 辅助站点时。图 3 显示了新的分发点属性对话框，用于将标准分发点转换为分支机构分发点。
图 3 配置 分支机构分发点
图 3 配置 分支机构分发点
SMS 2003 引入了一种复制技术，允许进行从站点服务器到分发点的程序包的文件增量复制。此技术对包含几个较小文件的 SMS 程序包非常有效。例如，如果 SMS 管理员需要只对一个文件或较大 SMS 程序包中几个小文件进行更改，则只有程序包中那些已更改的文件被复制而不是整个程序包。
随着操作系统部署在 Configuration Manager 2007 中重要性的增强，用户希望确保能够以尽可能有效的方式通过 WAN 链路在整个基础结构中复制操作系统映像包和其他较大的程序包。为达到该目标，Configuration Manager 2007 引入了站点服务器到站点服务器、站点服务器到分发点以及分发点到分支机构分发点的二进制增量复制。
例如，从预安装了几个应用程序的 Windows Vista 部署映像开始。此程序包的大小可能是 6GB，因为它是 Windows 映像格式 (WIM) 映像，它还是一个单独的 6GB 文件。如以前所述，在 SMS 2003 中，如果 WIM 映像被打开以更改设置或添加发布的 2MB 大小的新修补程序，由于该映像是一个单独的 WIM 文件，因此必须将整个 6GB SMS 程序包复制到该分发点。相反，使用 Configuration Manager 2007 中的二进制增量复制，如果更改了设置或向 WIM 映像包添加了单个修补程序，则只会在整个基础结构范围内复制 2MB 修补程序或设置而不是复制整个 6GB 的程序包。

移动设备的常见过程
发布 SMS 2003 后不久，Microsoft 就发布了设备管理功能包 (DMFP)，用于管理 Windows CE 和 Pocket PC 移动设备。随着移动设备在企业组织中的普遍深入，对其进行管理的需要变得更加紧迫。根据此趋势，Configuration Manager 2007 改进了 SMS 2003 DMFP 并提供了强大的新集成解决方案来管理移动设备（包括 Windows Mobile® Smartphone 和 Pocket PC 电话），这与管理服务器、笔记本电脑以及台式计算机大致相同。
移动设备的基本管理包括硬件和软件清点、文件收集功能、软件分发、密码设置以及安全策略管理。使用 Configuration Manager 2007 基于 Internet 的客户端管理，现在所有设备都可以在您的 Intranet 上或通过 Internet 进行管理。这非常适用于 Smartphone 或企业 LAN 上极少使用的其他设备。
部署代理的过程也进行了增强。现在，支持无线客户端升级并且通过 Configuration Manager 控制台可以自动实现客户端分发。

维护窗口
我所接触的许多企业客户在服务器和特定的关键任务桌面上都预定义了维护窗口。此外，他们经常会询问如何对设备部署较大的应用程序（如 2007 Microsoft Office system），而且在典型的正常工作时间不会影响最终用户。
Configuration Manager 2007 引入了名为维护窗口的新功能。通过此功能，您可以定义安装特定集合的时间窗口。这使您可以强制执行播发，而无需担心在正常工作时间或给用户带来不便的时间安装程序包的负面影响。
例如，请考虑 2007 Office system 程序包部署。您希望尽快为最终用户推出此应用程序，但是您不希望应用程序的推出影响正常工作。您可以设置维护窗口来显示希望系统执行安装的时段 — 可以是 8:00 P.M. 到 6:00 A.M。无论什么原因，如果在某一特定日期的此维护窗口期间系统不可用，Configuration Manager 将等待至维护窗口中定义的下次时间，以确保不会意外干扰正常工作。您还可以选择在某个播发级别忽略维护窗口，使您能够尽快部署关键更新，不管存在什么限制。

操作系统部署
操作系统部署功能是 Configuration Manager 2007 唯一最大的重点领域。Microsoft 已将 Configuration Manager 设计为部署服务器和工作站平台操作系统的主要方式。Configuration Manager 2007 集成了 SMS 2003 操作系统部署 (OSD) 功能包中的最佳功能，以便从根本上更改管理操作系统部署的方法。
如您所知，Windows Vista 为操作系统部署引入了新的 Windows 映像 (WIM) 格式。使用此格式有不少好处，首要的一个好处是 Configuration Manager 2007 本机导入了 WIM 映像格式，这样管理员就可以直接从控制台使用这些映像并对其进行部署。
Configuration Manager 中另一个重要的新功能是集成的任务排序器。如果您熟悉 Microsoft 商用台式机部署 (BDD) 解决方案加速器，您将发现它与 Configuration Manager 中可用的功能和选项有很多相似之处，但有一个主要的不同点：您不再需要编写脚本来部署或捕获操作系统映像。通过利用任务排序器，操作系统部署过程完全不需要任何干预。
任务排序器可以帮助安排部署操作系统需要执行的所有步骤，包括进行部署前要在较旧的操作系统中执行的步骤（用户状态迁移和应用程序设置转移），部署新操作系统的步骤（设置格式、磁盘分区、产品密钥、用户名、公司、许可证设置、驱动程序安装），以及部署完新系统后要求执行的步骤（其他应用程序安装、更新安装、用户状态迁移）。作为此功能的一个示例，图 4 显示了任务序列编辑器，突出显示了在 Windows Vista 部署中您可以利用的一些功能。
图 4 编辑操作系统部署的步骤
图 4 编辑操作系统部署的步骤
除了任务排序器，Configuration Manager 2007 中还有若干用于操作系统部署的其他增强功能，如图 5 所述。例如，Configuration Manager 支持通过设备驱动程序管理对 x86 和 x64 平台的预引导执行环境 (PXE) 进行裸机部署。通过此设备驱动程序管理选项，您的组织可以显著减少需要为各类硬件维护的映像数。通过与 Windows Vista WIM 映像格式引入的单一映像支持结合，在执行操作系统部署时您无疑会节省时间和资金。
Figure 5 操作系统部署功能 (Close Figure 5)

方案 | SMS 2003 | Configuration Manager 2007
端到端部署 | 是 | 是
完全自动化 | 是 | 是
擦除并加载法升级 | 是 | 是
PXE 裸机部署 | 与远程安装服务 (RIS) 松散集成 | 与 Windows 部署服务 (WDS) 内置集成
并行 | BDD 脚本 | 是，通过内置状态迁移点
完全脱机部署 | 否 | 是
Windows Vista 升级规划 | 否 | 是
完整服务器部署 | 否 | 是
设备驱动程序管理 | 否 | 是

软件更新管理
如同 Configuration Manager 2007 中的其他功能，软件更新管理已得到显著改进。通过为所有软件更新和所需配置管理信息创建一个新的基于状态的高优先级通道，Configuration Manager 将向托管代理推出更新和定期程序包的方法分离出来。推出其他软件包不会防碍推出软件更新或从托管的工作站、笔记本电脑或服务器接收修补程序状态。
软件更新管理的基于状态的方法还意味着修补程序和更新状态不再与硬件清单扫描相关，因此不再需要当前的 Inventory Tool for Microsoft Updates (ITMU) 和扫描目录。相反，Configuration Manager 将使用运行 Windows Server Update Services (WSUS) 的新软件更新点 (SUP) 服务器角色在后端作为软件更新引擎和数据库。
在 Configuration Manager 中，WSUS 使您能够在一个集中位置进行所有更新管理。这使您可以下载 Microsoft Update 上所有可用的内容，包括非关键更新、驱动程序和 Microsoft 平台的其他软件包。此外，Microsoft 还会鼓励其合作伙伴通过此方法发布软件更新。很多公司当前为 SMS 2003 R2 中的自定义更新清单工具 (ITCU) 发布了清单，并计划对接下来的 Configuration Manager 也采取同样的行动，Adobe 和 Citrix 就是其中的两家。
此新的软件更新引擎还提供接近实时的更新状态以启用更好的报告和增强的主页视图。通过这些自定义的视图，您可以快速了解整个 IT 基础结构或特定计算机集合的修补程序状态。图 6 显示了通过为软件更新管理自定义的某个新主页视图查看特定公告的修补程序符合性数据的过程有多简单。
图 6 查看软件更新状态
图 6 查看软件更新状态
最后，软件更新部署模板显著减少了向系统或集合推出新的更新所需的步骤数。通过使用软件更新部署模板存储常见的配置信息（如是否强制重新启动或客户端是否应在执行安装前从分发点本地下载修补程序），此功能将 SMS 2003 中 ITMU 需要的步骤从 18 步减少到 Configuration Manager 2007 中的 6 步。

所需配置管理
配置管理是 Configuration Manager 2007 中另一个非常显著的改进功能。SMS 2003 所需配置监视在 2006 年秋季发布，并提供了 Configuration Manager 2007 所需配置管理中包含的许多关键功能。有关所需配置监视的背景信息，请参见 TechNet 杂志文章，网址为 microsoft.com/technet/technetmag/issues/ 2006/09/HighStandards。图 7 描述了显示两个特定配置基线符合性的“所需配置管理”主页。
图 7 报告所需配置基线符合性
图 7 报告所需配置基线符合性
Configuration Manager 中所需配置管理的关键驱动程序来自对 Microsoft 客户的大量研究，显示大部分服务停用是由关键任务服务器和桌面上的操作系统或应用程序配置错误导致。使用 Configuration Manager 中的所需配置管理功能，管理员可以通过对系统运行定期基线扫描快速捕获配置偏差。这些基线使用配置项 (CI) 创建，并提供组织中计算机集合的符合性信息。
除了捕获配置偏差，所需配置管理还可以帮助实现法规符合性报告和更改验证。在大部分组织中，都有可能需要法规符合性报告，如萨班斯·奥克斯利法案 (SOX)、支付卡行业数据安全标准 (PCI DSS) 和健康保险可携性与责任法案 (HIPAA)。Configuration Manager 2007 可通过所需配置管理帮助您获得所需的报告。
下面是所需配置管理的工作原理。管理员将定义配置项 — 可以在计算机中检测、应用和删除的配置单位。定义这些配置项后，即可创建由一个或多个配置项组成的配置基线。随后，这些基线将被分配到 Configuration Manager 集合进行符合性监视和法规报告。
配置项可以查看计算机的几个不同方面以收集信息，包括 Active Directory®、文件元数据、脚本结果、存储在 SQL Server™ 中的数据、软件更新数据、WMI、XML、注册表值、IIS 元数据以及 Microsoft Installer 显示和配置。从不同位置收集的信息将存储在 Configuration Manager 数据库中，并用于验证系统是否符合要求。
有趣的是，现在所需配置管理过程和通过 Configuration Manager 2007 发布新更新的过程已完全集成。与新的软件更新引擎相同，所有所需配置管理数据将使用基于状态的高优先级通道。这两种关键任务功能的集成使管理员可以定义新的所需配置管理基线或通过新更新来更新现有基线（作为更新部署过程的一部分）。

基于 Internet 的客户端管理
您将计算机与网络断开连接时间是否过长，使得 SMS 中的计算机对象过时？根据我与客户的交流，这种情况经常发生。幸运的是，Configuration Manager 2007 引入了新的基于 Internet 的客户端管理功能。此功能的工作方法与 Microsoft Office Outlook® 通过 HTTPS 与 Exchange Server 进行通信，而无需使用虚拟专用网络 (VPN) 非常相似。如果您不很了解此方案，只要知道您与客户端计算机的通信会更安全而且不需要复杂的 VPN 连接就可以了。
基于 Internet 的客户端管理使您可以管理 Internet 上的计算机，这与管理 Intranet 上计算机具有相同的控制级别。实际上，本文中介绍的所有功能都可与基于 Internet 的客户端管理一起使用，但是操作系统部署、网络唤醒和远程工具除外，因为它们使用不同的通信端口且不能通过 SSL 或 TLS 以隧道方式运作。一些可以运用基于 Internet 的客户端管理情况的最佳示例包括：餐馆、零售商店和加油站的销售点设备；员工的家庭计算机；需要长期在外奔波的工作者（如销团队或顾问团）。
在 Configuration Manager 2007 基础结构中启用基于 Internet 的客户端管理之前，您需要满足一些要求。首先，您需要一个公共密钥基础结构 (PKI) 将数字证书分配给 Configuration Manager 托管的所有代理。这将使您能够使用 Configuration Manager 服务器和所有管理代理之间的相互身份验证，确保您接收的数据已加密并来自受信任的源。您还需要一个 SSL 终止器作为 Configuration Manager 服务器和所有基于 Internet 的客户端之间的连接点。Microsoft Internet Security and Acceleration (ISA) Server 2006 是符合这些要求的基于软件的解决方案。
新的备用状态点 (FSP) 服务器角色将使用基于 Internet 的客户端管理。如果基于 Internet 的代理无法正确通信或证书过期，该代理会将问题报告给组织的外围网络中可用的备用状态点。这将确保用户从不与其托管的 Internet 系统失去联系。此外，客户端可以在基于 Internet 的管理和基于 Intranet 的管理之间自动切换，从而在适当的时间最好地利用适当的资源。

其他新增功能
尽管网络唤醒并不被认为是关键任务功能，但它仍是管理员的工具集中极为重要的一项功能，它用于快速而安静地获得软件分发、软件更新或完成操作系统部署。Configuration Manager 2007 为拥有兼容网卡的所有基于 Intranet 的托管代理启用了网络唤醒功能。图 8 显示了您如何在新设计的新建播发向导中将网络唤醒用于播发。在该示例中，我将为一组计算机部署新的程序包。如果网络唤醒兼容设备已关闭，通过在向导中启用的此设置，Configuration Manager 将启动系统以部署播发定义的程序包。
图 8 软件分发播发中的网络唤醒
图 8 软件分发播发中的网络唤醒
在 Configuration Manager 中完全对远程控制进行了重新编写，以提供更安全可靠的解决方案，从而显著提高性能。Configuration Manager 并非使用 SMS 1.0 中附带的旧工具，现在它使用在远程桌面协议 (RDP) 基础上构建的 Windows Vista 本机协作技术。基本功能与 SMS 2003 相同，最终用户都不需要接受新会话。但是，引入了三种新的访问级别：完全控制、仅查看和无。除了此新技术，当需要远程协助时，Configuration Manager 2007 还可与之集成。

总结
我已经向您逐步介绍了 System Center Configuration Manager 2007 中的几个新增功能和增强功能。这些功能旨在帮助减少管理工作量、启用新的工作负载并降低 IT 环境的成本。通过 Configuration Manager 2007 和 System Center 系列中的其他产品，您可以处理具有最高要求的 IT 基础结构，从而使您的企业具备竞争优势。
除了在本文中概述的功能，该产品还包含许多其他增强功能，如 Windows Server® 2008 Network Access Protection (NAP) 集成和基于 SMS 2003 SP3 中附带的同一资产智能技术的软件资产管理 (SAM) 增强功能。我鼓励您下载 Configuration Manager 2007 预发布版本或 RTM 试用版以便在基础结构中工作时查看这些功能。
有关更多信息以及 System Center 系列中所有产品的概述，请访问 microsoft.com/systemcenter。在此，您可以导航到 System Center 系列中的任何解决方案，包括 Configuration Manager。

John Orefice是 Microsoft 在中大西洋地区的技术解决方案专业人员。首先他曾经在 Microsoft Consulting Services (MCS) 多年担任 Microsoft 管理解决方案咨询师，现在他是 Microsoft 的技术解决方案专业人员。您可以通过 john.orefice@microsoft.com 与他联系。
© 2007 Microsoft Corporation 与 CMP Media, LLC.保留所有权利；不得对全文或部分内容进行复制.


 System Center: 对分支机构部署应用程序和更新
System Center Steve Rachui

对分支机构部署应用程序和更新
概览:
  • 配置分支分发点
  • 关于边界
  • 设置数据的三种方法

Microsoft 正在准备发布其下一代的系统管理解决方案。新的 System Center Configuration Manager 2007 以前称为 Systems Management Server (SMS)，
包含很多一定会使人印象深刻的新功能。其中的一项便利功能就是分支分发点 (BDP)，这是一种新型分发点，专为满足小型或分布式办公机构设置的需要而设计。粗略一看，与其他新功能比起来，BDP 貌似只是一个不起眼的新增功能，但是，请不要过快地忽略掉此功能。
对于以前版本的 SMS 来说，服务器系统是唯一受承载分发点支持的平台。如此一来，由于分支机构通常缺少本地服务器，需要通过低速 WAN 链接进行通信，因此，需要向分支机构提供服务的管理员要非常费力地设计和创建允许及时而有效地分发软件的基础结构。BDP 正是为解决这种情形的需要而设计的。
BDP 设计用于在工作站和服务器级系统上运作，这是一个在每个 Configuration Manager 2007 客户端上都可用的组件，但默认情况下并不启用。尽管每个 Configuration Manager 2007 客户端都具有作为 BDP 运行所必需的代码，但并非每个客户端都应如此配置。

设置 BDP
在客户端上激活 BDP 功能基本上同配置基于服务器的分发点相同。首先将客户端配置为新的站点系统（如图 1 所示），然后指明它是一个分支分发点（如图 2 所示）。此配置会将 BDP 作为程序包、软件更新、操作系统部署 (OSD) 映像等的可用分发点列出。策略由站点服务器准备，针对所选的将启用 BDP 功能的客户端。下载此策略后，客户端将开始充当 BDP。
图 1 将客户端配置为新的站点系统
图 1 将客户端配置为新的站点系统
图 2 将站点系统配置为分支分发点
图 2 将站点系统配置为分支分发点
可配置某个 BDP 或任一站点系统使其为特定边界（以前在 SMS 2003 中称为站点边界）或边界组服务，也可将其配置为在无特定边界的情况下运行。Configuration Manager 2007 中的边界通常是由 IP 子网或 Active Directory® 站点定义的。
要配置 BDP 使其为一组特定边界服务，请在站点系统配置窗口中选择“启用此站点系统作为受保护的站点系统”选项，然后指定应服务的边界，如图 1 中所示。请注意，如果您计划为按需内容设置使用 BDP（我很快就会讲到此内容），则此步骤为必需步骤。如果省略此步骤，则 BDP 基本上可以充当任何标准分发点。

关于边界
BDP 上的受保护边界仅用于定义哪些客户端能够访问 BDP 上的内容；而不能参与决定 BDP 可以访问哪些标准分发点来下载其所需的内容。例如，假定存在一个在边界 A 上安装了 BDP 的环境。现在假定边界 B 包含使用后台智能传输服务 (BITS) 的唯一的标准分发点，此分发点配置为仅为边界 B 中的客户端服务。当 BDP 尝试下载内容时，是否会成功？根据受保护边界的预期规则，您可能认为会失败。然而，在此情况下，下载会成功，因为 BDP 下载不拘泥于已在标准分发点上配置的任何受保护边界。
BDP 还提供了相当大的灵活性。可以在每个分支机构位置启用一个 BDP，如有必要，也可以在一个分支机构（边界）内启用多个 BDP。当配置多个 BDP 为相同的边界服务时，这些 BDP 将协同工作（有点类似于负载平衡），为这些边界内的客户端提供内容。

设置数据
启用后，BDP 可通过三种不同的方法获取所需内容：管理员设置、按需设置和手动设置。无论通过哪种方式获取内容，必须至少有一个启用 BITS 的标准分发点是可用的，并配置了 BDP 将接收的内容。让我们看看可用于获取内容的三种方法。
管理员设置 这是在分发点上暂存内容的常见方法。使用此方法要求管理员手动选择 BDP 作为分发点。手动选择 BDP 作为分发点将导致准备这样的策略：通知 BDP 在下一个策略更新周期内从同一站点内启用 BITS 的标准分发点下载要设置的内容。
按需设置 这是一种新的内容暂存方法，专用于 BDP。此方法允许在客户端提出请求后根据需要向 BDP 下载内容。管理员不执行将内容设置到 BDP 上的操作 — 这表示不选择 BDP 作为程序包节点内的分发点。按需设置实际上将导致请求内容时选择 BDP 作为分发点。这是在后台自动发生的行为。
仅在将程序包配置为支持此选项（请参见图 3）且 BDP 受到保护时，才进行按需配置，以确保请求内容的客户端只能访问 BDP，而不能访问具有此内容的任何标准分发点。请注意，如果在相同的受保护边界内配置了多个 BDP，则对一个 BDP 发出的按需设置请求将导致对所有 BDP 设置该内容。
图 3 启用 程序包的按需 分发
图 3 启用 程序包的按需 分发
手动设置 顾名思义，这种暂存内容的方法要求管理员手动进行配置。必须对程序包进行配置，指示将手动传输该内容，如图 3 所示。然后，必须手动将内容复制到 BDP 中使用典型程序包预期的目录结构的程序包文件夹。
BDP 将识别该新程序包，使其对发出请求的客户端可用。由于此方法允许使用可移动媒体将内容传输到 BDP，因此，对于标准分发点和 BDP 之间的带宽有限的环境，该方法非常理想。
您可以配置 BDP 以将下载内容存储到特定分区；如果未指定分区，BDP 将自动选择要使用的分区。将内容配置为暂存在 BDP 上或处理按需请求时，在 BDP 上，目标内容不会立即可用。相反，会准备策略，通知 BDP 该内容已可供下载。到下一个策略周期时，BDP 将接收策略，开始该内容的 BITS 下载。您可以使用组策略来精确地控制使用的带宽和 BITS 下载计划。请注意，BDP 上的分发点共享看上去和标准分发点上的共享一样 — 这意味着内容未加密。

针对您的组织的正确设置
如前所述，BDP 角色是为分支机构创建的，在工作站系统上完全可以正常运行。但是，BDP 也可以在服务器级系统上运行。基本操作系统会影响与 BDP 的连接的数目。对于工作站，有最多允许 10 个同时连接的限制，而服务器不受此限制约束。因此，根据需要支持的同时连接的数目，您可能希望在分支机构内使用服务器系统，也可能希望使用多个工作站系统。无论使用哪种平台，仍必须至少有一个启用 BITS 的标准分发点具有请求的内容。
无论您的基础结构是怎样配置的，BDP 都使您能够更好地控制任何组织内的软件分发流程。BITS 允许对下载进行节流和计划，其内置支持为要求更精细控制和更高可预测性的管理员提供了一个关键好处。

Steve Rachui 是 Microsoft 产品支持服务组的一员，是一位负责提供可管理性支持的专家级工程师。自 SMS 版本 1.2 起，他一直负责相关的 SMS 支持工作。可通过 steverac@microsoft.com 与 Steve 联系。


 System Center: System Center Essentials 2007 入门
System Center David Mills

System Center Essentials 2007 入门
概览:
  • 安装和升级
  • 配置 Essentials 2007
  • 故障排除步骤

System Center Essentials 2007 是一种新的 IT 管理解决方案，专为具有 50 到 500 台 PC 和 5 到 30 台服务器的中型企业设计。IT 专业人员针对自己对于统一管理解决方案的特定需求做出了大量反馈，因此 Essentials 2007 应
运而生。Essentials 2007 满足了这些需求，并使您能够通过单一安装和简单配置就可以快速启动和运行。
具体来讲，Essentials 2007 提供了监控、故障排除以及资产跟踪功能来帮助保持您的 IT 环境处于安全和最新的状态。Essentials 2007 还提供了一个统一管理控制台，您可在其中管理服务器、客户端、硬件、软件和 IT 服务（请参见图 1）。另外，Essentials 可执行复杂的管理任务，例如，解决最终用户问题、进行监控以及更简单、更有效地部署服务器和客户端软件。
图 1 Essentials 2007 管理控制台
图 1 Essentials 2007 管理控制台

Essentials 2007 要求
开始安装和配置 Essentials 2007 之前，请检查您的系统是否满足对软件和硬件的最低要求。服务器操作系统应使用 Windows Server® 2003 SP1 或 R2，或者使用 Windows® Small Business Server 2003 SP1 或更高版本。还需要 Active Directory®、IIS 6.0、Microsoft® .NET Framework 2.0 和 3.0 或更高版本以及 SQL Server™ 2005 SP1。服务器本身要求至少有 1GB RAM、12GB 的可用磁盘空间和 1.8 GHz 的处理器。建议使用具有 2GB RAM、20GB 的可用磁盘空间和 2.8 GHz 或更快的处理器。
托管客户端计算机需要使用 Windows 2000 Professional SP4、Windows XP SP2 或 Windows Vista®。x86 和 x64 操作系统均受支持。
托管服务器计算机需要使用 Windows 2000 Professional SP4 或更新的操作系统。x86 和 x64 操作系统均受支持。由于许多用户可能都希望从自己的台式机或笔记本电脑监控和管理其 IT 环境，因此，这些用户希望在自己的机器上运行仅 Essentials 2007 控制台安装。开始之前，请确保计算机运行的是 Windows XP SP2、Windows Vista 或 Windows Server 2003 SP1。
另外，规划 Essentials 2007 服务器配置时，请留出足够的磁盘空间以容纳更新下载和报告数据库。在更新方面，更新数据库可增长至 2GB 以上，更新内容可增长至 6GB 以上。Essentials 操作和报告数据库可增长至 4GB。请据此进行规划，以避免出现用尽存储空间的情形。

安装 Essentials 2007
因为 Essentials 2007 有效利用了向导，能够快速引导用户完成安装和配置、计算机发现及更新配置等关键任务，因此安装 Essentials 2007 很简单。运行安装向导时，Essentials 2007 会自动检查是否满足上述先决条件，如果发现缺少某些内容，将向您发出通知（请参见图 2）。
图 2 检查安装先决条件
图 2 检查安装先决条件
如果 Essentials 2007 磁盘上不具备所需项目，安装屏幕上会显示指向缺少的待安装软件的链接。在完成安装向导的过程中，需要输入 Essentials 2007 安装位置的路径和具有管理权限的帐户的信息。如果此帐户在管理服务器及所有托管计算机上都具有管理员权限，则使用 Essentials 2007 管理计算机会是一项更为简单的任务。Essentials 支持使用一个帐户执行任务，例如，在托管计算机上安装代理。
如果当前未安装 SQL Server 2005，无法从本地或远程与 Essentials 2007 配合使用，则您可以在安装过程中选择使 Essentials 2007 从本地安装具有高级服务的 SQL Server 2005 Express。Essentials 2007 光盘中附带了此版本的 SQL Server。您还可以购买带有专为与 Essentials 2007 一起使用而授权的 SQL Server 2005 Standard 的 Essentials 2007 版本。
在安装过程中，需要您做出的主要决定只剩 Essentials 2007 用于存储更新的位置。您可以本地存储更新，这样，更新将从您的 Essentials 2007 服务器通过网络发送到托管计算机。这可能是最好的选择，在 Internet 访问成为您所在网络的瓶颈时，尤其如此。也可以在需要更新计算机时直接从 Microsoft Update 下载更新。选择这种方式意味着：当需要某一个更新时，如果有 50 台计算机，就要下载 50 次，每台计算机下载一次。这种方式可能有点麻烦，但也有其优点，就是在管理服务器上占用的磁盘空间会相对较少。
Essentials 2007 支持的基本部署拓扑是在一个服务器上安装所有管理组件（请参见图 3）。但是，您也可以选择将 Essentials 2007 管理控制台安装在办公室的台式机或笔记本电脑上，从而远程控制管理服务器。安装远程控制台前，必须先在 Essentials 2007 服务器上运行功能配置向导。此过程决定了是使用域组策略还是本地组策略配置远程控制台。如果选择使用域组策略，请确保在安装远程控制台的计算机上进行更新前已经历了足够长的时间。如有必要，可以安装多个远程控制台。
图 3 基本 Essentials 2007 配置
图 3 基本 Essentials 2007 配置
如果您管理的 IT 环境中包含 200 台以上的计算机，则您需要在远程服务器（而非 Essentials 2007 管理服务器）上安装 SQL Server 2005，并将此远程实例用作您的 Essentials 2007 数据库（请参见图 4）。这样，在扩展环境规模时，性能可得到增强。请切记，此远程服务器必须与 Essentials 2007 管理服务器位于相同的域中。
图 4 使用远程 SQL Server 数据库
图 4 使用远程 SQL Server 数据库
如果您在安装 Essentials 2007 的过程中选择使用现有的 SQL 数据库实例，则必须确保 Essentials 2007 管理服务器上安装并配置了 SQL Server 2005 SP1 Reporting Services。

升级到 Essentials 2007
很可能您目前正运行着 Windows Server Update Services (WSUS) 2.0 或 3.0 来处理 Microsoft 更新。如果是这种情况，您可能希望升级到 Essentials 2007 以获得更全面的管理解决方案，Essentials 允许您在安装过程中进行升级。这种就地升级保留包括二进制文件、组和批准在内的现有更新信息。
如果您正在使用 Microsoft Operations Manager (MOM) 2005 或 MOM 2005 Workgroup Edition 监控关键服务器，但希望将新增的 Essentials 2007 功能用于资产库存、软件分发以及更新，则您可以通过将管理包导出后进行转换，再将其直接导入 Essentials 2007 中来轻松迁移管理包。就像 MOM 2005 一样，Essentials 2007 利用管理包来监控计算机和设备。管理包中还包含成功诊断和解决 IT 问题所需的信息。如果您不希望完全迁移到 Essentials 2007，则可以维持并行操作以保留关键任务监控，并在方便时执行迁移。
事先需要注意，升级到 Essentials 2007 的过程中，某些 WSUS 设置不再予以保留。您将丢失有关计算机、自动批准和设置，以及对名为 All Clients 或 All Servers 的组的所有现有批准的信息。因此，请在升级前从 WSUS 中删除 All Clients 和 All Servers 组。接下来，您必须在 Essentials 2007 安装完成后重新创建这些批准。
请注意，如果现有服务器具有活动的下游服务器，则无法从 WSUS 执行此升级。Essentials 2007 不支持 WSUS Upstream Server (USS) 模式。由于无法对此进行可靠的检测，因此，如果 WSUS 服务器具有下游服务器，将对您发出警告。另外，如果您正在使用 WSUS 2.0 或 2.0 SP1，并且使用未运行 SQL Server 2005 SP1 的远程数据库来存储 WSUS 数据，则不要继续进行升级。
升级过程中，将自动创建当前数据库的备份副本。如果升级未成功，则可以使用备份副本恢复以前的环境。检查当前的数据库文件大小并确认有足够的空间来创建副本，以确保有充足的空间备份当前的 WSUS 数据库。

配置 Essentials 2007
Essentials 2007 提供了许多向导来帮助您执行配置和管理任务。对于某些手动执行起来困难重重的配置步骤（如配置组策略），功能配置向导可引导您快速完成这些步骤。图 5 显示了该向导的第一页。
图 5 启动功能配置向导
图 5 启动功能配置向导
如果您希望通过代理服务器连接到 Internet，则首先要执行的一个步骤是输入服务器名称和端口号。接下来，您可以选择配置托管计算机所用的组策略类型 — 可以是本地组策略，也可以是域组策略。如果选择了使用域组策略来配置托管计算机，则您还可以创建 Windows 防火墙例外。
接下来的一步是启用计算机的远程协助，该步骤是可选的。如果选择使用域组策略配置客户端，则需执行该步骤。请注意，这会在所有托管计算机上创建防火墙例外在 TCP 端口 135 上允许 DCOM。
您可以选择是否从托管计算机收集无代理错误监控。如果选择“是”并为存储错误选择了一个位置，则托管计算机将错误报告发送到 Essentials 2007 服务器，您可以查看报告来了解哪些应用程序有问题。
用户可以选择指定是否将错误报告转发给 Microsoft 以及是否配置并发送每日运行情况报告，后者包含有关警报、更新、软件和库存的信息。如果将每日运行情况报告配置为通过电子邮件发送，您就可以在工作日开始之际快速了解自己的 IT 环境目前的状况。
最后，您可以选择设置每日定时查找新计算机。建议您选择此选项，因为这可以告知 Essentials 2007 每日对 Active Directory 进行扫描来查找新计算机，并自动将新计算机配置为托管计算机。
如果运行为自动计算机查找配置的计算机和设备管理向导，会提示 Essentials 2007 服务器查询 Active Directory 并查找域中待托管的所有列出的计算机（请参见图 6）。如果您选择“高级”查找选项，则可以按类型（如仅客户端或网络设备）筛选找到的设备、在某一个 IP 地址范围内进行搜索或创建高级查询。建议您首先选择“自动”计算机查找，并运行它以查找所有客户端和所有服务器。由于 Essentials 2007 也会监控启用了简单网络管理协议 (SNMP) 的网络设备，因此您可以随后在高级模式下再次运行该向导来查找网络设备。
图 6 启动计算机和设备管理向导
图 6 启动计算机和设备管理向导
如果您的网络中包含大约 300 台计算机，则您可能应选择“高级”查找并提供更具体的条件来查找计算机。指定管理员帐户时，请确保该帐户在要查找的计算机和要安装代理的计算机上拥有管理权限。查找结束后，请选择要管理的计算机并单击“完成”。
如果您使用过 WSUS，则更新管理配置向导中的某些设置对您来说并不陌生。将服务器连接到 Internet 时，如果要求使用代理服务器，请输入代理服务器设置。选择要为其下载并部署更新的产品，然后选择更新所需的语言（服务器所用的语言是默认的）。选择要下载并部署的更新的类别（默认为关键更新、安全更新和 Service Pack）。选择要自动批准的更新的类别（如果有），并选择更新所属的组。（默认设置是 All Computers 组的关键更新和安全更新）。最后，设置同步更新的计划（默认设置为每日更新）。
配置 Essentials 2007 时，如果您可以使用域管理员或组策略管理员凭据登录，您应选择域组策略来配置托管计算机，这样可使配置更为轻松。如果您选择域组策略，则可以自动在所有托管计算机上配置 Windows 防火墙和远程协助设置。此选项可使 Essentials 2007 为您创建策略配置。如果您选择本地策略，则必须手动执行相当多的配置。

Essentials 故障排除
对计算机查找、代理部署以及通信问题进行故障排除时，有几个需要注意的事项。首先，让我们快速了解一下计算机查找过程的工作原理。Essentials 2007 接受用户的搜索输入参数，创建一个轻型目录访问协议 (LDAP) 查询（LDAP 是在 Active Directory 中搜索对象所用的查询语言），该 LDAP 查询随后被传递到本地域控制器，提交搜索任务，然后 Active Directory 将结果返回给管理服务器。管理服务器随即尝试连接到列表中返回的每台计算机，确保它可以与找到的这些计算机进行通信，以便能安装管理代理。一旦某台计算机通过验证，则被添加到找到的计算机列表中以便用户进行管理。
不过，请注意，如果 Active Directory、网络和 DNS 或者验证方面存在问题，Essentials 2007 服务器则可能无法查找计算机。
打开 Active Directory 用户和计算机管理控制台，查看该计算机是否已列出。Windows Server 2003 中会默认安装此工具，也可以从 Windows Server 2003 管理包将该工具安装到 Windows XP Professional 中。选择“已保存的查询”文件夹，右键单击，指向“新建”，然后单击“查询”。输入查询的名称，然后单击“定义查询”按钮。单击标记为“查找”的下拉列表，选择“计算机”。输入要查找的计算机名称或搜索前缀，单击“确定”几次，则会生成查询。
现在，检查该计算机是否出现在结果列表中。如果未出现，则将该计算机添加到 Active Directory 中。请确保该计算机的 DNSHostname 属性设置正确，该属性位于 Active Directory 用户和计算机管理控制台中“计算机属性”对话框的“常规”选项卡上。
如果需要通过网络联系某台计算机，可利用 ping 命令尝试使用为查找向导提供的同一名称联系该计算机。如果该计算机响应 ping 命令，请使用 -a 开关和 IP 地址运行 ping：
ping -a <IP address>
以下命令将显示该计算机的 DNS；它应与原始 ping 命令中使用的名称相符。使用此命令查看该计算机的已注册的 NetBIOS 名称和域：
nbtstat -a <computer name>
这将利用计算机的 IP 地址完成相同的任务。
nbtstat -A <IP address>
命令开关 –a 区分大小写。注意，使用 IP 地址时请使用 –A。如果计算机不响应 ping 请求或远程代理安装失败并显示消息“RPC 服务不可用”，则表明开启了 Windows 防火墙。如果在 Essentials 2007 部署环境中启用了防火墙，则必须创建例外，以使 Essentials 2007 管理服务器可以在托管计算机上成功安装代理，并使托管计算机能够与管理服务器通信。（使用托管计算机时，如果使用的是域组策略而不是本地组策略，则无需手动创建任何防火墙例外。）
如果代理安装失败，请导航到“管理”空间（主 Essentials 2007 管理控制台左下角与“报告”导航按钮相邻的金色嵌齿），然后单击“挂起管理”。此视图将提供故障排除步骤，还使您可以将代理重新推送回首次尝试安装失败的计算机。
请确保您能接受花费数小时的时间来将防火墙策略应用到要管理的所有计算机上。如果您试图依次快速执行运行功能配置向导、选择域组策略、运行计算机和设备管理向导这一系列操作，则防火墙策略可能还没有机会应用到正在查找的计算机上，因此，如果防火墙仍然处于启用状态，将导致查找失败。
要查看某代理是否可以成功推送到某台计算机，一种方法是尝试从管理服务器建立到该计算机的 telnet 连接。如果可以从管理服务器通过端口 135 建立到该计算机的 telnet 连接，则表明您可以开始下一步了。如果不能建立连接，则表明该计算机上的防火墙可能阻止了 TCP 端口 135。要运行 telnet，只需打开一个命令窗口并键入以下内容：
telnet <computer_name> 135
这会将您连接到通过端口 135 使用 telnet 指定的计算机名称。端口 135 的重要性在于，远程安装代理时要使用此端口。
如果上述操作不起作用，请确保创建了正确的 Windows 防火墙例外，以允许部署代理和与管理服务器通信。如果尚未创建，则您需要创建端口例外，如图 7 中所示。对于所有这些例外，请使用“自定义列表”选项限制 Essentials 2007 管理服务器的 IP 地址范围。
Figure 7 端口例外 (Close Figure 7)

协议 | 名称 | 端口
TCP | 端口 6270 | 6270
TCP | 端口 135 | 135
TCP | 端口 445 | 445
如果您的计算机使用的是第三方制造商的防火墙软件，则应参考适用于产品的文档了解如何创建例外。不过，图 7 中所列的端口例外仍然适用。
如果 NetBIOS 名称和完全限定的域名 (FQDN) 不匹配，则必须改正计算机的 DNS 记录。如果代理已安装，但与管理服务器的联系失败，请通过终端服务或远程桌面连接到代理计算机，使用 ping 和 nbtstat 命令验证代理是否可以解析管理服务器的 NetBIOS 和 FQDN 名称。
如果 Essentials 2007 管理服务器的 IP 地址是动态分配的，则在 IP 地址变更时，您必须更新托管计算机上的防火墙策略。要为新的管理服务器 IP 地址更新防火墙例外，请在组策略对象编辑器中启用以下两个策略设置，并按我下面的描述对其进行配置。对于“Windows 防火墙: 允许远程管理例外”，设置“允许”来自管理服务器的新 IP 地址的未经请求的传入消息。对于“Windows 防火墙: 允许文件和打印机共享例外”，设置“允许”来自管理服务器的新 IP 地址的未经请求的传入消息。

总结
希望本文中的信息对您初步了解 System Center Essentials 2007 能够有所帮助。有关此 System Center 新产品的更多信息，请访问 microsoft.com/sce。
请牢记，在部署之前务必仔细规划。现在的情况是，您要部署一个全新的解决方案来管理 IT 环境，因此需要花一些时间来考虑您当前的网络配置、用户的工作方式以及您管理 IT 资源要使用的方式。首先考虑这些事项有助于您按自己的需要成功配置 Essentials 2007。

David Mills已在 Microsoft 任职七年，是 System Center Essentials 2007 的高级技术产品经理。加入 System Center Marketing 组之前，David 曾领导 Windows Server 部门中的用户协助组，该组负责发布核心联网和管理技术的 IT 专业人员技术文档。


 System Center: 关注带有 Operations Manager 2007 的服务器
System Center Pete Zerger

关注带有 Operations Manager 2007 的服务器
概览:
  • Operations Manager 2007 的新增功能
  • 使用操作控制台
  • 角色的作用
  • 强大的新增报告功能

System Center Operations Manager 2007 是 Microsoft 操作管理平台的一大飞跃。Operations Manager 2007 代表把监视的重点从以计算机为中心更改为真正的面向服务的策略转移
监视平台。虽然作为一项基于代理的监视解决方案，新的模型与其前身具有一些相似之处，但 Microsoft® Operations Manager (MOM) 2005 管理员熟悉的概念做了较大改动。正如您将看到的，有激动人心的新增功能、新管理界面以及大量有关此 Microsoft System Center 系列最新添加内容的其他资源。

管理界面
新增管理界面的更改是最明显不过了。操作和管理员控制台分离的情况消失了，取而代之的是具有管理、编写、操作以及报告功能的增强的操作控制台（请参见图 1）。此外，单一的、经常令人困惑的 MOM 2005 管理员控制台文件夹树也不见了。取而代之的是具有五个特定功能工作区、外观与 Outlook® 相似的一个界面：监视、编写、报告、管理以及我的工作区。
图 1 操作控制台
图 1 操作控制台
监视工作区在一个整洁的界面中显示网络基础结构的警报、状态、性能以及图表视图，该工作区与您将在 MOM 2005 中的操作员控制台上看到的工作区类似。
在编写工作区，您可以配置新规则和创建对其执行规则和监视的组。具有显著改进的报告界面集成到了操作控制台，从而取消了访问单个报告网站的必要性。此外，还包含用于执行管理任务（如计算机和网络设备发现、安全通知设置配置）的界面。最后，“我的工作区”允许用户创建自定义视图、保存常用视图和搜索以及配置自定义警报通知订阅。
操作控制台包含与上下文相关的帮助，其中包括指向产品文档、在线网络广播以及概念指南的链接。操作控制台还包含丰富的搜索功能，允许用户为任何对象类型定义高级搜索条件，根据对象类型和搜索中定义的值特征返回结果。
操作控制台中的操作窗格提供了众多与上下文相关的任务，这些任务提供了有关对象配置和状态的信息，使用该窗格，您可以为目标对象启动新的 Health Explorer（请参见图 2）。在 Health Explorer 中，树结构代表给定实体（受监视对象）的受监视对象的运行状况，具有层次结构。每一个实体至少受四个参数监视：可用性、配置、性能和安全性。这些值层叠在一起；上述每一参数的状态都根据在层次结构中位于其下方的监视器状态计算。
图 2 Health Explorer
图 2 Health Explorer
Health Explorer 诊断受监视对象中的故障，并使您能够通过单击事件详细信息中的超链接处理错误条件。您还可根据需要运行任何显示在 Health Explorer 详细信息窗格中的诊断和恢复任务（如图 3 所示），或者将任务配置为在生成警报时自动运行。当状态更改事件突出显示时，任何诊断任务的输出（如检索正在运行的进程列表）将自动显示在详细信息窗格中。
图 3 诊断和恢复
图 3 诊断和恢复

Web 控制台
Operations Manager 基于 Web 的管理功能在此版本中得到很大扩展。Web 控制台通过 Internet Explorer® 显示操作控制台的监视功能和“我的工作区”区域，提供了在操作控制台中可用的相同视图，包含一个功能完善的操作窗格以执行基于上下文任务，以及将受监视对象放入维护模式的功能（请参见图 4）。
图 4 Web 控制台
图 4 Web 控制台
还包含一个移动 Web 控制台，可允许来自任何具有 Web 功能移动设备的访问。Web 控制台提供了可向 Outlook 2007 收件箱或所选 RSS 聚合器发布警报的 RSS 源。

命令行界面
Operations Manager 命令行界面是一个功能强大的界面，允许对命令行进行完全管理控制。许多复杂的任务都可通过一行代码（也称为一行式命令）启动。命令行界面是为 Windows PowerShell™（基于 Microsoft .NET Framework 的面向对象的命令行环境）特意配置的实例。这使您可以访问称为 cmdlet 的众多功能，这些功能可执行操作控制台 GUI 中的任何任务，甚至更多任务。使用这些 cmdlet，您可快速轻松地对多个目标对象执行某个任务（如将大量的代理放入维护模式），但在操作控制台上完成此任务则需要更多时间。例如，要将所有打开的关键警报导出到网页，需在 Operations Manager 命令行界面窗口执行以下步骤：
get-alert | where {$_.Severity -gt "Warning" -and $_.ResolutionState -eq 0 } | format-table
monitoringobjectdisplayname,name,severity,
description
正是 Windows PowerShell 面向对象的属性使命令行界面如此强大。您可以获取 Operations Manager .NET 类库的功能，而无需了解 C# 或 Visual Basic® .NET。

计算机和设备发现
同时，计算机发现和代理部署在 Operations Manager 中也有所改进。您可通过以下方法查找代理：使用操作控制台的计算机和设备管理向导、允许管理员搜索 Active Directory® 或手动输入目标计算机或计算机列表（请参见图 5）。详细的轻型目录访问协议 (LDAP) 查询允许更详细地定位用于代理部署的特定计算机。
图 5 通过 Active Directory 查询进行高级查找
图 5 通过 Active Directory 查询进行高级查找
通过该向导，您可查找启用简单网络管理协议 (SNMP) 的设备，然后可在管理包规则中对该设备进行监视。
与 Active Directory 的集成是另一项重大改进。它可使管理员在 Active Directory 中（通过一个简单的实用工具）注册管理组信息，所以 Operations Manager 代理可通过查询 Active Directory 找到合适的管理服务器。该新的集成还允许管理员通过在机器映像中包含 Operations Manager 代理自动简化代理部署过程，通过受欢迎的系统管理平台（如 Systems Management Server 2003 或者 System Center Configuration Manager）或组策略来部署代理。

安全性
Operations Manager 2007 可用于监视多种类型的应用程序，其中一些应用程序可能需要仅限由特定技术支持人员来监视。幸运的是，该新的基于角色的安全模型拥有五个默认用户配置文件，组基于常见作业功能（从只读操作员到管理员）进行访问。每个默认用户角色都基于上述五个默认配置文件之一。用户角色定义用户可执行的操作类型以及这些权限的范围。您也可通过以下方法创建自定义角色：选择其中一个默认配置文件，然后设置角色范围，以便将监视数据的可见性限定为受监视对象、任务和视图的所需子集。基于用户配置文件的标准和自定义用户角色都可分配给 Active Directory 安全组，将用户置备任务放回至安全管理人员手中。
“作为执行运行”是 Operations Manager 2007 的又一新增功能，它提供了用于管理执行特定任务所需凭据的安全基础结构。例如，一些监视任务要求高权限凭据或者甚至非基于 Windows 的凭据。
“作为帐户运行”必须与“作为配置文件运行”相关联，后者又可与要求特殊权限的规则或任务相关联。通过“作为配置文件运行”，管理包作者可在编写过程中精简帐户要求，这样该管理员可在 Operations Manager 安装管理包后与合适的“作为帐户运行”结合。
通过要求相互身份验证，Operations Manager 2007 较之前身提高了代理和管理服务器之间通信的安全性。在受信任的环境中，可通过 Kerberos 达到相互身份验证的目的。在不受信任的外围网络环境中，情况可变得更加复杂。相互身份验证要求使用 x.509 证书基于证书的授权，这就要求组织在没有该授权的情况下考虑公共密钥基础结构 (PKI) 选项。

服务器角色
在 Operations Manager 保留了来自 MOM 2005 的管理服务器、操作数据库以及报告服务器角色的同时，还引进了新的管理服务器角色。根管理服务器在基础结构中隔离了重要功能，如用户授权、通知以及对控制台到专用角色连接的管理。要获得最佳性能，根管理服务器应该专用于此角色，并且不应该配置任何代理向此服务器报告。
通过将单一的通信返回至管理服务器，新的网关服务器角色在不受信任的域和外围环境中对管理计算机进行了更加有效的利用。在许多情况下，目标域中的代理可使用 Kerberos 协议通过身份验证进入网关服务器，这样使对基于证书的身份验证需求最小化并且降低了管理工作量以及总体拥有成本。

报告
用户会发现 Operations Manager 2007 在报告功能方面进行了显著改进，即操作控制台上提供了一个集成的报告空间。同样，报告安全性与整个 Operations Manager 安全性集成。
主要体系结构更改有多处，其中包含何时及如何将数据发布到报告数据库。将前天的报告数据从操作数据库中转移的夜间数据转换服务 (DTS) 任务消失了。取而代之的是，在数据插入操作数据库的同时就直接插入到了报告数据库，几乎没有任何延迟。
Operations Manager 报告包含新的智能参数标题，为定义和报告有关特定和相关的数据和时间范围提供了灵活性，其中包含将报告输出限制为用户定义的工作时间范围。智能参数标题中的对象选取器提供了搜索功能，来简化定位报告对象的任务。在计划报告过程中，由于使用灵活数据选取器，所以无需修改报告定义文件以在重复的报告中获取特定的相关数据范围（请参见图 6）。
图 6 配置工作时间
图 6 配置工作时间
另一项报告改进目标是确保快速呈现报告，即使报告在扩展数据范围中执行时。最后，Operations Manager 报告数据自动进行预索引并聚集到每小时和每天的摘要数据点，这些数据点用于所有的 Operations Manager 报告。除了编译数据外，由于原始数据点可在数据库中大幅度压缩而不会影响历史报告功能，从而提高了数据仓库的可伸缩性。
到目前为止，给人印象最深刻的改进是报告本身所呈现的内容和功能，它们以网络工程师和 IT 管理员熟悉的格式显示历史性能和可用性数据。
图 7 呈现了由一个带有表格的图表组成的标准性能报告。图表中的行和表格中的描述都提供了对详细报告的点击，如图 8 所示。
图 7 标准性能报告
图 7 标准性能报告
图 8 性能详细报告（深入）
图 8 性能详细报告（深入）
Operations Manager 中的可用性报告基于对象状态。任何可具有状态的对象都可在当前可用性报告中定位。只需单击一次即可从详细报告移动到可用性报告（请参见图 9）。
图 9 可用性报告
图 9 可用性报告
对于不带有报告的管理包而言，存在提供几乎所有托管对象的可用性报告和性能报告的通用报告，从而大幅度减少了编写自定义报告的必要性。
管理员很高兴看到现有 Operations Manager 2007 支持针对单一报告数据仓库的多个管理组报告。报告安全与产品基于角色的安全相集成，从而允许管理员通过 Active Directory 安全组控制报告访问。

通知
Operations Manager 2007 中的通知引擎经过了完全的重组，添加了管理员迫切需要的很多新功能，包括其他通知选项（称为通知渠道），如即时消息和 SMS（它要求在管理服务器上安装第三方 SMS 提供商）。通知订阅现在包含一个范围选项，管理员可以通过此选项限制为操作员角色提供的对象类型和组的可见性，并且更准确地定位通知订阅。
当满足订阅中定义的条件的警报在用户定义的时间内仍处于给定的解决状态时，警报老化（升级）允许发送通知。
现在可以对每个订阅自定义消息格式，这样消息格式自定义功能就扩展到了单个用户级别。此外，操作控制台中“我的工作区”窗格的自助通知允许用户定义其通知设备和订阅设置。您会发现有些通知功能极其方便。

管理包
管理包仍然代表 Operations Manager 2007 中服务和应用程序监视的基础框架，它们直接提供来自 Microsoft 产品团队的知识。然而，它们将服务器监视转变为面向服务的监视，集中监视提供的服务的运行状况。
虽然空间限制没有改进，但是您应该注意到，MOM 2005（计算机和计算机组）的简单对象类型模型已改进为可以定位多种受监视对象类型的可扩展模型。因此，为第三方 ISV 提供了一个丰富的开发环境，以开发突出的行业、网络和跨平台产品。
与 MOM 2005 一样，监视规则很简单，可用于各种常见监视任务，如文本和事件日志监视、WMI 事件查询、按计划执行的脚本和得到极大改进的 SNMP 陷阱提供程序（不需要编译 SNMP 管理信息库）。
然而，在 Operations Manager 中，监视器检测管理对象状态中的更改。监视器包含许多 MOM 2005 提供程序中没有的功能，如 TCP 端口检查、用于数据库和网站连接的综合事务、ASP.NET 应用程序和 Web 服务监视，以及对分布式业务线应用程序的面向服务的监视（这可能也是最重要的）。不久我会更详细地介绍这些内容。

自我调整域值
有时，行为对给定的计数器是未知的。对于此类情况，Operations Manager 提供了自我调整阈值监视器。自我调整域值监视器通过一个对定义的业务周期（通常为一周，也可以是一天）的了解过程确定特定性能计数器对象的正常值，然后根据了解期间记录的操作标准定义阈值。这些阈值代表预期的活动，包括在资源利用情况的明显增加或减少，在夜晚的应用程序和系统维护期间可能会出现这些情况。

综合事务
为了获取应用程序运行状况的更多动态图，Operations Manager 提供了综合事务功能，这些功能是针对受监视对象实时运行的一组操作。综合事务可为网站创建，用于浏览顺序、数据库连接以及 TCP 端口监视。您可指定服务器节点，通过这些节点，事务（称为观察程序节点）将与所需监视间隔一同运行。如果选择多个观察程序节点，可通过结果比较确定每个节点体验是否相同。
用于捕捉 Web 浏览器顺序的 Web 应用程序编辑器还允许管理员定义警告级别和错误级别响应时间阈值，以及为页加载和链接检索中的单独操作指定性能计数器集。支持要求多种身份验证方法（如 Basic 或 NTLM）的安全 (SSL) 浏览器顺序。
覆盖是大家熟悉的 MOM 2005 概念，用于调整 Operations Manager 设置的配置，以获得一个对象或一组托管对象的监视器、属性以及规则（请参见图 10）。覆盖的使用对控制 Operations Manager 收集的数据量很重要。您可以将组和覆盖一起使用，从而缩小监视器、规则、属性或对象发现重点的范围，使其不仅包含您自己的管理包中的对象目标组，还包含 Microsoft 和第三方 ISV 的管理包中的对象目标组。
图 10 为服务监视器覆盖参数
图 10 为服务监视器覆盖参数

业务线应用程序监视
使用新的分布式应用程序设计器，您可创建一个关键应用程序的服务级别图，然后提供分布式应用程序组件的运行状况摘要。它包含任何发现的对象类型，如 Web 服务、SQL Server™ 数据库，甚至包含网络路由器、交换机等非 Windows 设备。然后可在一个图表中查看对象关系以及当前状态。
为使该强大功能更具可访问性，Microsoft 提供了多种分布式应用程序模板，为管理员提供了定义自己业务线应用程序的起点。多种常见方案的模板可用，包含 ASP.NET 应用程序和 ASP.NET Web 服务、业务线 Web 应用程序、消息传送、SharePoint® 门户场以及终端服务场。
新模板可通过 Microsoft 或第三方管理包添加到管理组，然后在添加监视向导中显示。适用于 Active Directory、Exchange 及 Operations Manager 的分布式应用程序监视器都是预部署的并且不能进行编辑。

管理包可用性
专门为 Operations Manager 2007 编写的管理包（称为优化的管理包）旨在利用 Operations Manager 2007 中的新增功能并计划于 2008 年初发布新的软件版本。不过，通过使用 MPConvert 实用工具可将现有 MOM 2005 管理包转换为 Operations Manager 2007 适合的格式，或者使用 MOM 2005 到 Operations Manager 2007 迁移工具从现有 MOM 2005 安装进行转移；这两种工具均可在 Operations Manager 2007 CD 中获得。事实上，Microsoft 正在将 MOM 2005 管理包转换为 Operations Manager 2007 兼容的格式，所以该操作应该一般仅适用于自己开发的管理包。

审计收集
审计收集提供可自动收集和集中存档分布式 Windows 安全事件日志的解决方案。它专为需要为内部和外部遵从性审计收集和分析大量安全事件日志数据的大中型企业而设计。审计收集由四个角色组成：收集器、转发器、数据库角色以及报告角色。收集器是“捕捉”事件并将其插入到审计收集数据库的服务器。转发器是一种接近实时地发送安全事件日志事件的服务，可将本地管理员干扰安全日志事件的可能性降至最低。转发器服务包含在 Operations Manager 2007 代理中，但是一直处于禁用状态，直到为给定代理启用审计收集。
审计收集采用了夜间自动数据库维护功能，确保在大型数据集中呈现的报告性能一致和良好。审计收集维护可由管理员进行调整以满足组织要求的滚动数据集（默认存储日期为 14 天）。对于分析所收集的事件，审计收集包括报告角色，其中包含一个大约具有 20 个审计报告的基础集以及一个高性能 WMI 订阅服务器，为特殊查询提供了一个简单的界面，而无需直接授予管理员访问权限。

客户端监视
使用 Operations Manager 2007 中新增的客户端监视功能，管理员可监视桌面操作系统和应用程序、帮助确定目前经常出现的错误，从而将工作集中于为组织取得最大效益。收集的错误数据用于生成详细视图和报告，为管理员提供可用信息资源以促进支持决定。
Operations Manager 2007 中的客户端监视实际由三个可单独启用的级别构成：
无代理异常监控 (AEM) 可使管理员监视操作系统以及应用程序的崩溃和错误。管理员可将先前进入 Microsoft 的报告指向 Management Server，然后可将这些报告从 Management Server 转发到 Microsoft（如果您选择这样做）。
客户体验改善计划 (CEIP) 当您参与 CEIP 时，可使用组策略配置客户端以将报告重定向到 Operations Manager 2007 Management Server，而不是将其直接发送到 Microsoft。然后配置 Management Servers，以将报告转至 Microsoft。
注意 AEM 和 CEIP 客户端监视组件可无代理执行至关重要。
适用于关键业务工作站的客户端监视 实际包含将 Operations Manager 代理部署到关键业务桌面。管理包包含 Windows 2000、Windows XP、Windows Vista 以及监视 Microsoft Office、Internet Explorer 以及其他 Microsoft 桌面应用程序的 Microsoft 信息工作者。

试一试
正如您所看到的那样，System Center Operations Manager 2007 提供了大量功能，用于在所有正确位置提供带有集成的面向服务的监视，允许您利用 Active Directory 中的现有投资、简化管理以及减少总体拥有成本。我鼓励您尝试这个功能强大的新版本并且挖掘它的可能性。
您可在 microsoft.com/technet/opsmgr/2007/downloads/trials/privacy.mspx 下载 Operations Manager 2007 有效期为 180 天的试用版软件。有关 Microsoft System Center 技术的更多信息，请访问 System Center Operations Manager 主页，网址为 microsoft.com/systemcenter/opsmgr。在新的“大处着眼”网站查看 System Center 的成功事例（视频和案例研究），网址为 designedforbig.com。

Pete Zerger是 AKOS 技术服务的咨询合作伙伴。Pete 拥有九年在 IT 行业工作的经验，主攻设计和部署企业操作管理、目录服务和消息传送解决方案。他是一位消息传送 MCSE、SQL Server 2005 MCTS，并且还是 Microsoft Operations Manager 的 Microsoft MVP。


 System Center: 从 MOM 迁移到 Operations Manager 2007
System Center Andy Dominey

从 MOM 迁移到 Operations Manager 2007
概览:
  • 规划 Operations Manager 部署
  • 评估硬件需求
  • 保留历史数据
  • 测试计划

服务器监控和管理是任何现代 IT 基础结构的重要部分。确保 IT 基础结构不仅正确运行而且足以支持用户在其上造成的负载是至关重要的。但是，收集该信息
说来容易做起来难，而且获得该信息后，要知道利用它做什么完全是另外一回事。幸运的是，我们可以获得帮助。Microsoft® Operations Manager (MOM) 已在七年前使其成为可能，并且其最新产品 System Center Operations Manager 2007 在该基础上有所扩展。

为什么要迁移？
相对于早期版本 MOM 2005，System Center Operations Manager 2007 做出了大量重要改进。核心体系结构经过了重新设计并做出了重大改进，以允许产品更好地识别多种设备上的应用程序，以及既可以识别服务器又可以识别组成服务器的所有组件。
此外，Operations Manager 的优点是包含一个强大的排列规则引擎和一个 Health Explorer。前者能够聚合警报数据，从而大大减少了伪警报的数量；后者有助于简化查找和解决问题的过程。
它还提供了自我调整的阈值和基线引擎，允许您轻松跟踪环境中的性能使用情况。报告引擎也得到了重大改进，从而提供超级图形和钻取报告功能。查看图 1，体验一下报告数据的可视表示形式。
图 1 Operations Manager 2007 中的可用性报告
图 1 Operations Manager 2007 中的可用性报告
Operations Manager 甚至可用于监视桌面计算机和服务器。以下是 Operations Manager 2007 提供的一些其他功能：
  • 适用于 Windows Server System™ 平台的出色监控
  • 强大的应用程序监控能力和功能
  • 常见任务的自动化
  • 促进企业级可伸缩性和控制的下一代数据库引擎
  • 安全增强功能和 Active Directory® 集成
有关 System Center Operations Manager 2007 中提供的新功能的更多信息，请查看本期 TechNet 杂志中 Pete Zerger 撰写的文章“关注带有 Operations Manager 2007 的服务器”。

迁移到 Operations Manager
在规划迁移到 Operations Manager 2007 之前，您需要意识到该产品没有直接升级途径。由于对 Operations Manager 进行了如此重大的体系结构更改，该产品不能与早期版本保持足够的兼容性以允许就地升级。因此，如果您当前正在运行 MOM 2000 或 MOM 2005，则您需要考虑下文介绍的迁移策略之一。
但是，如果您没有运行 MOM 的早期版本，您可以直接安装该产品的新版本。请记住，您必须提前决定在项目中您是否具备足够的内部技能来执行安装或迁移，或者您是否需要获得第三方的帮助。显然，这将影响项目的总成本，因此应该在此过程的开始考虑该问题。

迁移方案
对于这些当前没有运行 MOM 的用户，部署非常简单：规划和设计体系结构，然后部署软件。但是，如果您正在使用 MOM，则 Microsoft 支持两种迁移方案，即同一硬件上的并排方案和不同硬件上的并排方案。让我们研究一下这两种迁移方案。
同一硬件上的并排方案 在该方案中，您在现有 MOM 2000 或 MOM 2005 体系结构所在的同一物理硬件上安装 Operations Manager。该方法适用于 MOM 基础结构利用率不高的站点和服务器硬件足以同时支持新旧版本的站点。如果 Operations Manager 的安装不会严重影响当前 MOM 服务器的性能，则您应该只考虑该途径。
不同硬件上的并排方案 在这种情况下，新安装在新的或不同的硬件上执行。这是优先选用的方法，因为它确保在进行迁移时只对当前管理基础结构产生很小的影响。值得一提的是，不一定需要其他硬件。新的 Operations Manager 2007 服务器可以在虚拟机上分阶段实施，直到旧的服务器硬件可以重新分配。

注意事项
在您执行特定迁移策略之前，需要考虑一些要点。
首先，您需要考虑硬件和软件要求以及相关的成本。即使您决定将部分或整个 Operations Manager 基础结构分阶段实施或预配置到虚拟机上，您仍需要允许操作系统和应用程序许可证以及 OML（操作管理许可证）来使 Operations Manager 监视每个代理。
其次，您需要规划资源来执行工作。在小型企业中，这可能不是特别复杂或困难的计划，但是在大公司中，它将是整个迁移策略的重要部分。
您还需要考虑该迁移可能在总体上对当前监视基础结构或服务器资产产生的潜在影响。您应该准备好应对每种可能的事件，包括服务器重新启动甚至是关键生产服务器出现故障。
请注意，如果您正在 MOM 2000 中使用 Microsoft Access™ 数据库或在 MOM 2005 中使用 SQL Server™ 数据仓库来存档数据存储和报告，则当前不支持将该数据迁移到 Operations Manager 2007。

规划成功的迁移
作为顾问，我发现的最大问题之一是不适当的部署计划。因此，一旦您决定是在新硬件还是现有硬件上进行安装，下一步就是创建项目计划。
您的项目计划应该列出本文中建议的项目阶段 — 尽管这不是一个详尽列表。务必要为每个项目阶段分配足够的时间并提供所需要的任何资源。
如前所述，System Center Operations Manager 2007 的体系结构与 MOM 2000 和 2005 大不相同。对于初学者来说，Operations Manager 中有一种附加服务器角色，即根管理服务器 (RMS)。RMS 管理针对管理组的配置，处理与其他管理组和第三方产品的所有连接，还负责管理组内的安全。该角色可以存放在现有 System Center Operations Manager Management Server 上，但是在大的复杂环境中，它应该被赋予自己的物理服务器。另外，存在于 MOM 2005 中的分层管理组的概念已被连接管理组取代。在此新的体系结构中，管理组之间实际上没有传递警报数据；相反，来自连接管理组的警报仅在请求方管理组的用户界面中提供。此外，如果您正考虑在不受信任的域或工作组中的计算机上安装代理，必须使用证书来允许代理和管理服务器互相验证（在 Operations Manager 中强制执行的功能）。
为了设计 System Center Operations Manager 的体系结构，您将需要考虑计划监视的服务器和客户端的数量，无论它们位于您需要监视应用程序和平台的受信任域中还是您要监视网络基础结构。您还需要确定要求自定义规则或管理包的任何应用程序。
在此阶段您应该确定管理包要求。一旦确定将监视的应用程序，您可以决定将安装哪些管理包。管理包包括应用于特定应用程序或操作系统的规则、监视、任务和类，如果其相关应用程序或操作系统正在您的环境中使用，还应该将其导入。该阶段管理包的选择将影响硬件和软件要求以及应该分配给安装和配置软件的时间量。
您在确定 Operations Manager 基础结构的体系结构后，就应该准备使用 System Center Capacity Planner 2007 工具（撰写本文时为测试版）。使用该工具规划出您的网络和服务器基础结构并针对计划的 Operations Manager 部署来模拟运行它，以确保它足以监视和管理基础结构。
此时，如果您正在计划迁移，还应该特别注意体系结构设计。您需要考虑 MOM 200x 与 Operations Manager 一起运行将导致其他网络通信的事实。

部署
要考虑的下一个阶段就是部署。在安装软件之前，您需要确保提供了足够的硬件。如果您将软件安装到一个新环境中，那么物理硬件会更好，对于数据库服务器来说尤其如此。但是，如果无法使用物理硬件，则可以将管理服务器虚拟化。在迁移方案中，使用虚拟化服务器是购买硬件来分阶段实施新基础结构的良好替代方法。在这种情况下，您可以使用虚拟机分段实施 Operations Manager，同时取消原来的 MOM 服务器并重建。
提供服务器后，您就可以开始安装软件了。首先，确保将运行 Operations Manager 的服务器拥有支持软件的必要软件先决条件。例如，如果您正在运行 SQL Server 2000 并且计划在同一服务器上安装 Operations Manager，那么您需要首先升级到 SQL Server 2005 SP1。要查看此操作的要求，您可以从 System Center Operations Manager 安装媒体中运行 Operations Manager 先决条件检查器。
当满足了所有的软件先决条件并且配置了 SQL Server 和 Reporting Services 后，您就可以开始安装 Operations Manager 软件了。在单服务器环境中，这很简单；您仅需在服务器上运行 Operations Manager 安装程序文件即可，然后如果您想使用 Operations Manager 报告功能的话，可以运行其安装程序。但是，在分布式环境中，则需要按正确的顺序将 Operations Manager 组件安装在单个服务器上。首先安装数据库，然后安装第一个管理服务器，此管理服务器将自动被分配给“根管理服务器”角色。完成此操作后，就可以安装任何其他的管理服务器了。最后一步是安装 Web 控制台和报告组件。

迁移
在此阶段，试图利用任何新功能之前，您应该确保新基础结构反映了您现有的监视。应该将在原来的环境中使用的管理包全部复制到新的 Operations Manager 部署中。如果有可用的 Operations Manager 管理包，您可能希望导入该管理包，但不具有较新版本的管理包均需要从当前管理组中导出，使用 MPConvert 工具将其从安装 CD 转换，然后将其导入到 Operations Manager — 除非您拥有小型的或简单的自定义管理包，这种情况下最好仅重建管理包。复制配置时也有一种有用的工具。MOM 2005 到 Operations Manager 迁移工具有助于将配置从现有的 MOM 管理组复制到 Operations Manager；您也可以在 Operations Manager 安装 CD 上找到它。图 2 显示了迁移过程中的一种典型配置。
图 2 迁移过程中的典型配置
图 2 迁移过程中的典型配置
复制配置之后，您需要确保使用 Operations Manager 与使用 MOM 实际收到的警报和收集的数据相同。幸运的是，Operations Manager 代理可以与原来的 MOM 代理共存，所以这两种代理可以同时运行。您可以从这两种代理收集数据，将它们进行对比以确保其准确性，然后再取消原来的系统。
接下来，您应该制定一个测试计划。测试可能包括将来自原有系统的警报与 Operations Manager 系统中的警报进行简单的比较，但也可能要求有意生成警报以全面评估新基础结构。对测试结果感到满意后，您就可以开始卸载原来的 MOM 代理，方法是使用 MOM 控制台或代理计算机上的“添加/删除程序”。
报告是 MOM 和 System Center Operations Manager 部署的重要组成部分，也需要予以解决。现在无法将现有的 SystemCenterReporting 数据库迁移到 Operations Manager 2007，因此您可以为 Operations Manager 创建 Reporting Services 的新实例，同时将现有的 MOM 2005 (SystemCenterReporting) 数据库保留在一个专用的 SQL Reporting Services 实例中以显示原来的报告。System Center Operations Manager 2007 中新的报告控制台集成到了产品中，所以不推荐将 Reporting Services 控制台用于 Operations Manager 之外的任何产品。将来也许可以通过数据迁移脚本解决报告数据的迁移，但同时您可能不得不放弃存档的报告数据，并且当您开始生成新形式的报告时，管理工作是如此令人激动，以致于人们可能没有注意到原来的数据不复存在了。

结束语
相对于 MOM 2000 和 2005，System Center Operations Manager 做出了重大改进，但这些进步也具有一定的成本。基本体系结构的主要更改（以及由此导致不存在直接就地升级途径）意味着部署成本有可能上升。最大限度降低这些成本的关键是您适当地计划并确保有从事该工作的合适人选。这样，您就可以通过使用 System Center Operations Manager 从 Microsoft 的努力工作中受益。

Andy Dominey已经在 IT 行业工作了八年，目前作为英国的 Windows 管理专家受雇于 1E。从 MOM 2000 开始，他就一直从事 MOM 方面的工作。Andy 在过去的两年中连续获得 MOM 的 Microsoft MVP 奖。


 System Center: 使用 Microsoft SoftGrid 虚拟化应用程序
System Center Ahmer Sabri and Kedar Shah

使用 Microsoft SoftGrid 虚拟化应用程序
概览:
  • 应用程序虚拟化的优点
  • SoftGrid 体系结构概述
  • 流化软件包

自 20 世纪 60 年代起，各种形式的软件虚拟化概念相继出现。但在 IT 行业中，却花费了数十年的时间才意识到应用程序
虚拟化的潜能。现在人们已经理解了这一重要性，并对此作出了重大改进。
Microsoft 于 2006 年 7 月收购了 Softricity，此举促进了其应用程序虚拟化。本次并购催生了 Microsoft® SoftGrid — 一个应用程序虚拟化解决方案。使用 SoftGrid 时，应用程序是从数据中心或其他网络位置提供的，并在虚拟环境下的远程客户端上本地运行。虚拟化应用程序在真空区中运行，并且其操作独立于操作系统和本地桌面上的其他应用程序。
使用 SoftGrid 实现应用程序虚拟化的好处有很多，在此无法一一介绍。不过，下面我们将介绍一些最显而易见的好处：
简化回归测试和兼容性测试 由于可在同一台计算机上并行运行同一应用程序的多个版本而不发生冲突，从而显著降低了测试和部署新应用程序的复杂性、时间和费用（请参见图 1）。
图 1 使用 SoftGrid 简化应用程序部署
图 1 使用 SoftGrid 简化应用程序部署
更轻松的系统管理 IT 对于这些应用程序的运行环境具有很高的控制权，使得维护理想的桌面环境更加轻松。
更少的服务台呼叫 由于桌面环境的管理更好、冲突更少（归功于虚拟化应用程序在受控的真空区中运行），用户呼叫服务台的次数也减少了。
增强的桌面安全性 由于应用程序不会安装在操作系统上，从而改善了操作系统的总体安全性。应用程序仅对授权用户提供，从而防止了未授权的访问。大多数应用程序都呈现在标准的安全上下文中。
自由坐席体验 用户首选项（配置文件和其他设置）都存储在网络中，因此允许用户从任意一台 PC 访问其应用程序、首选项和控件。
改进的容错和灾难恢复 应用程序将转换为像其他任何企业数据一样可以存储和复制的数据文件。通过使用第三方工具，可在实时站点和 Bulk Copy Program (BCP) 站点之间自动同步应用程序及其更新，从而可在发生灾难时迅速访问应用程序。
最终，这些特性减轻了系统管理的负担、降低了成本，还可以使您的组织能够更快、更可靠地采用新技术。现在，我们来进一步了解 SoftGrid 的工作方式。

虚拟化应用程序的工作方式
SoftGrid 体系结构是由大量相互协作的组件组成的。它包含众多 SoftGrid 组件，如数据存储、虚拟应用程序服务器、排序器、管理控制台、管理 Web 服务和客户端应用程序等，这些组件与标准的基础结构组件协作，如 Active Directory®（请参见图 2）。我们将为您提供 SoftGrid 体系结构概述，并介绍各种组件如何协同工作。
图 2 SoftGrid 总体体系结构
图 2 SoftGrid 总体体系结构
SoftGrid 数据存储充当整个虚拟化环境的中央存储库。数据存储安装在 SQL Server™（版本 2000 或 2005）或者 Microsoft SQL Server Desktop Engine (MSDE) 上，用于保留记录、应用程序、配置、许可数据、报告信息和日志记录信息。
虚拟化应用程序服务于用户的计算机，呈现在客户端中。SoftGrid 具有两种类型：用于通用桌面的 Microsoft SoftGrid 应用程序虚拟化和用于终端服务器的 Microsoft SoftGrid 应用程序虚拟化。这些方法各有千秋，但也有一定的性能折衷，这将在“设置客户端”部分中进行说明。
SoftGrid 环境中最重要的组件之一是 SoftGrid Virtual Application Server (SVAS)。该组件用于处理用户的应用程序请求，并根据需要将应用程序数据流式传送给用户。
SVAS 以 Windows® 服务（称为 Microsoft System Center Virtual Application Server）的形式运行，对硬件的要求不高。默认情况下，所有应用程序数据自身（稍后会详细讨论）都位于 \Program Files\Softricity\SoftGrid Server\content 目录下。
用户登录到工作站后，会获得典型的 SoftGrid 体验。SoftGrid Client 捕获用户的安全令牌和域组成员身份，并通过安全通道将此信息传送给 SVAS。如果用户的安全标识符 (SID) 存在于应用程序的组成员身份目录中，并且每个应用程序的快捷方式都位于桌面上（或位于可以由管理员定义的其他位置，如开始菜单、快速启动工具栏等），则 SVAS 会为用户分配对应用程序的访问权限。
当用户单击快捷方式图标时，通常即会开始实际传递应用程序，该图标与 Open Software Description (.osd) 文件关联。该文件是基于 XML 的文件，包含有关应用程序包的信息。客户端从 .osd 文件检索虚拟应用程序服务器名称，并启动连接。此时，SVAS 将对客户端进行身份验证，并访问数据存储以确定是否获得许可。用户经过身份验证后，SVAS 会将应用程序数据以数据块的形式传送到客户端。默认情况下，每个数据块为 32KB，但可在排序时进行配置。
请注意，不会将整个应用程序传送到客户端。SoftGrid 只会传送在客户端启动应用程序所急需的应用程序部分。通常是所有代码的 20% 到 40%，具体会根据应用程序而不同。例如，Microsoft Word 2003 仅要求向客户端传送 15MB 的数据即可启动，而软件包的总大小是 800MB。如果用户访问了尚未位于客户端缓存的应用程序的一部分，则会将必要的代码传送到客户端。星期一上午会由于同时存在过多的请求而阻塞网络，为了避免此影响，组织可以选择在用户桌面上预缓存常用的应用程序。

Active Directory
SoftGrid 依靠 Active Directory（或 Windows NT® 4.0）域用户和组为授权用户提供应用程序。在多域环境中，可使用适当的组成员身份（SoftGrid 支持本地、全局和通用组成员身份）和信任关系为用户提供安装了 SVAS 的域。
安装 SVAS 时，会提示您提供不同的服务帐户和组，这些帐户和组有助于与 Active Directory 集成，随后会用于管理。因此，在进行安装前，您需要创建以下三个组和帐户：一个 SoftGrid 浏览器帐户、一个 SoftGrid 管理员组和一个 SoftGrid 用户组。
SoftGrid 浏览器帐户用于浏览 Active Directory，因此需要对多域环境中的所有 Active Directory 域具有只读权限。SoftGrid 管理员组用于授予对 SoftGrid 管理控制台和 SoftGrid 管理 Web 服务的管理访问权限。SoftGrid 用户组用于指派默认的提供商策略，这一策略用于向域中的所有用户授予对通过管理控制台发布的应用程序的访问权限。

虚拟环境
SystemGuard 位于 SoftGrid Client（在本地桌面上运行）的核心。SystemGuard 用于提供功能完备的虚拟环境以便孤立地运行应用程序。此仓储型环境包含应用程序正常运行所需的虚拟化操作系统组件 — 注册表、文件、字体、INI、COM、嵌入的服务以及环境变量（请参见图 3）。
图 3 用于孤立地运行应用程序的虚拟化环境
图 3 用于孤立地运行应用程序的虚拟化环境
SystemGuard 为其运行的每个应用程序创建了虚拟化注册表项。这些注册表项不允许本地操作系统上运行的其他应用程序访问，对注册表编辑工具（如 regedit）也是不可见的。注册表读写会根据需要重定向到虚拟项。但是，请注意，由于信息并未保存在虚拟注册表项中，允许虚拟化应用程序经过注册表。
类似地，SystemGuard 创建了虚拟化文件系统，并将应用程序的大部分读写重定向到此文件系统。此虚拟化文件系统是隔离的，当您希望在单一客户端上运行同一应用程序的多个版本时，此系统会为您提供所需的环境。
但是，应该指出，当应用程序与本地操作系统隔离时，用户仍然具有对所有本地服务（如打印、剪切和粘贴以及网络驱动器）的访问权限。

打包应用程序
现在，您可能希望了解如何创建功能完备的独立环境，以便在其中运行虚拟化应用程序。要完成此任务，需要用到 SoftGrid 排序器。使用此基于向导的工具，您可以在虚拟环境中打包应用程序，此操作可在客户端交付和执行。
排序过程包括以下三个步骤：安装，配置和测试，还有执行。在第一个步骤“安装”中，SoftGrid 排序器使用活动的查看进程监视应用程序的安装并评估应用程序依赖关系。此步骤完成后，“配置和测试”阶段将对默认配置进行必要的更改，以确保获得所需的首次运行体验。最后，在“执行”阶段，SoftGrid 排序器将编译启动应用程序所需的代码块并对其进行排序。Feature Block 1 (FB1) 是启动应用程序所需的基本代码，通过此代码，用户不必下载整个软件包即可运行应用程序。
在应用程序完成排序后，会创建四个文件：一个启用虚拟化的应用程序文件 (.sft)、一个开放软件描述文件 (.osd)、一个图标文件 (.ico) 和一个项目文件 (.sprj)。这些文件稍后会被复制到 SVAS 的内容目录下。管理员也可以使用 HTTP 服务器将 .ico 和 .osd 文件发布到客户端。
虽然 SoftGrid 通常会将应用程设置为在隔离环境中相互独立地运行，但 SystemGuard 仍然允许部分应用程序交互。您应仔细检查应用程序彼此之间可能存在的依赖关系，并将依赖于彼此间交互的应用程序排在一起。此过程通常称为配套。请注意，并非所有需要彼此交互的应用程序都能够排在一起。配套是一个非常复杂的过程，只能在仔细检查了依赖关系后才可执行，因为有时对两个或多个应用程序排序会与虚拟化目的相悖。

简化管理
SoftGrid 管理控制台提供了一种可以执行所有管理任务的单一工具。默认情况下，管理控制台安装在 SVAS 上，它也可以安装在任何其他服务器或工作站上。管理控制台是一个 MMC 3.0 管理单元，它使用 SoftGrid 管理 Web 服务连接到 SoftGrid 数据存储（请参见图 4），从而为获得授权的管理员提供了对数据库中存储的数据的完全访问权限，以方便其管理。管理控制台与 SoftGrid 管理 Web 服务之间是使用 Microsoft .NET Framework 远程连接的，从而可以在相同或不同服务器上安装管理控制台和 Web 服务。图 2 说明了这些不同的产品如何融合在一起并提供对整个 SoftGrid 实施的访问权限。请注意，较大规模的组织应运行 SoftGrid 管理 Web 服务的多个实例。
图 4 SoftGrid 管理 Web 服务提供了与数据存储的连接
图 4 SoftGrid 管理 Web 服务提供了与数据存储的连接
SoftGrid 管理 Web 服务在带有 IIS 5.0 或更高版本的 Windows 2000 或更高版本上运行。数据存储连接需要 .NET Framework 2.0 或更高版本，以及 Microsoft Data Access Components (MDAC) 2.7 或更高版本。
管理控制台提供了单一的管理工具，用于对应用程序执行发布、终止等操作。各种任务已组织到九种主要类别或容器中，如图 5 中的菜单所示。
图 5 从单一管理控制台中管理 SoftGrid
图 5 从单一管理控制台中管理 SoftGrid
此处为在每个容器中找到的管理任务的类型简介。“应用程序”容器用于供管理员执行一些操作（如导入 .sprj 文件）以发布更新的应用程序、指定 .osd 位置、删除应用程序等。默认情况下，此容器包含已发布的软件包，您可以使用此软件包测试客户端与应用程序服务器之间的连接性。
对应用程序排序时会创建文件类型关联。导入软件包后，文件类型关联在管理控制台中即变为可用。“文件类型关联”容器为管理员提供了用于修改所有文件类型关联的单一位置。
“软件包”容器控制活动升级的软件包版本；用户不必断开与服务器的连接，也不必关闭服务器，即可执行这些应用程序升级。管理员还可以使用此容器从管理控制台删除软件包。请注意，从“软件包”容器中删除软件包会从管理控制台和数据存储中删除 .sft 文件，但不会将其从应用程序服务器上的内容目录中删除。
正如前文所述，当用户启动一个应用程序时，SoftGrid Client 会检查许可证可用性，仅当许可证在数据存储中可用时才启动该应用程序。“应用程序许可证”容器供管理员用于关联证书与应用程序，支持无限许可证、并发许可证和命名许可证。
“服务器组”包含应用程序虚拟化服务器和日志记录信息的逻辑分组。管理员可以添加新服务器组，也可以修改现有组的属性（如用于通信或分配内存和进程的端口）。
在“提供商策略”容器中，管理员可以创建一组名为策略的规则。自定义提供商策略用于根据不同条件集授予用户对大量应用程序的访问权限。您可以使用“帐户颁发机构”容器指定当 SoftGrid 需要访问权限以读取域的目录信息时使用的域和凭据。“SoftGrid 管理员”包含负责管理 SoftGrid 环境的用户组。在此容器中，管理员可以添加或删除组以控制访问权限。
最后一个是“报告”容器，顾名思义，管理员可以使用该容器生成报告，以检查 SoftGrid 环境的总体运行状况。以下报告可用：应用程序利用率、软件审核、系统利用率、用户/组活动和系统错误。

建立客户端
SoftGrid Client 安装在用户将用于访问虚拟化应用程序的计算机的操作系统上。正如前文所述，支持以下两种客户端类型：面向桌面的 Microsoft SoftGrid 和面向终端服务器的 Microsoft SoftGrid。这些方法各有千秋，但在网络延迟、服务器场合并和易于管理等方面也有一定的性能折衷。
在桌面实施中，应用程序在本地可用，很少依赖网络可用性和吞吐量。例如，对具有 IT 基础结构受限制的分支机构的组织，建议使用此方法。对于已扩展到终端服务器的组织，终端服务是一个很好的选择。此方案可以有效利用硬件和软件，显著降低所需服务器的数量。当然，这会实现真正的自由座席环境。通常，大型组织会采用同时包含桌面和终端服务器的基础结构。设置 SoftGrid 部署时，这两种方法在安装和配置各种组件方面是相似的。
客户端可通过任何标准的方法进行部署，如手动安装或使用工具（如 Systems Management Server 2003）自动部署。图 6 列出了安装这些客户端所需的最低硬件和软件要求。
Figure 6 SoftGrid 客户端的系统要求 (Close Figure 6)

客户端 | 处理器 | 内存 | 磁盘空间 | 操作系统
面向终端服务器的 Microsoft SoftGrid | PIII 850MHz | 1GB RAM（最小 256MB，具体取决于用户和应用程序的数量） | 12MB 用于安装，4096MB 用于缓存 | • 启用了终端服务的 Windows 2000 Server 或 Advanced Server • 启用了终端服务的 Windows Server 2003
面向桌面的 Microsoft SoftGrid | PIII 600MHz | 128MB | 12MB 用于安装，2048MB 用于缓存 | • Windows 2000 Professional 或 Windows XP • Windows 2000 Server 或 Windows Server 2003
虽然安装客户端很简单，但在安装时有一些属性是必须提供的，如安装位置、缓存大小、虚拟驱动器所用的驱动器号和应用程序数据文件的位置等。安装好客户端后，可以使用客户端管理控制台指定或更改一些其他设置。
要启动客户端管理控制台，请转到控制面板，从管理工具启动 SoftGrid Client 管理。您可以选择要连接到本地计算机还是连接到远程计算机。
图 7 显示了客户端管理控制台包含一个根容器和三个子容器的情况。您可以从本机根选项卡上的 SoftGrid 指定大多数的功能参数，包括日志记录目录、应用程序数据目录、客户端运行和显示设置、错误和信息性消息弹出频率、最大缓存大小、虚拟化驱动器、断开与 SoftGrid 服务器的连接时的网络和连接选项，以及权限。
图 7 客户端管理控制台
图 7 客户端管理控制台
您可以在“应用程序”容器中查看和更改应用程序。“应用程序”容器提供了本地应用程序的状态信息，如应用程序是否正在运行、应用程序是否锁定在缓存中以及应用程序传送到本地缓存的百分比（.sft 文件）。
通过“文件类型关联”容器，您可以查看、更改和删除文件类型关联。有关详细信息，请参阅上文中介绍的“文件类型关联”。
通过“桌面设置”容器，您可以指定、更改和手动刷新在安装过程中指定的应用程序服务器设置。在此容器中，您还可以选择在用户登录时是否应刷新客户端（这是默认设置），以及自动刷新间隔的时间长度。

总结
使用 Microsoft SoftGrid 进行应用程序虚拟化可以显著改进系统可用性并简化管理。当大量的部件协同工作时，该体系结构实际上可以与 IT 基础结构进行无缝协作。
面向桌面的 Microsoft SoftGrid 可作为 Microsoft 桌面优化包的一部分供软件担保客户使用。有关更多信息，请访问 windowsvista.com/optimizeddesktop。根据 Microsoft 批量许可协议，面向终端服务的 Microsoft SoftGrid 可作为企业客户的独立客户端访问许可证使用。要下载试用版，请在 https://licensing.microsoft.com 登录到您的批量许可帐户，并在“产品下载”下选择 SA 的桌面优化包。

Ahmer Sabri是 Microsoft 金融服务组中的一位技术专家。可通过 ahmers@microsoft.com 与 Ahmer 联系。
Kedar Shah是 Microsoft 金融服务组中的一位技术专家。可通过 kedars@microsoft.com 与 Kedar 联系。


 编辑视角: 动态与优化
编辑视角
动态与优化
Joshua Trupin

在即将到来的数月里 ，您将获悉 Microsoft 的两个 IT 策略：动态系统和基础结构优化。这两个计划将帮助您更加成功地完成与 IT 相关的工作，同时也为您面对将来的挑战提供了支持。
动态系统计划为工具和应用程序定义了一个框架，该框架包含四个主要技术创新领域，以帮助指导将来的 IT 方式。要获取动态环境，您的基础结构和软件应该统一和虚拟化、由进程引导和由模型驱动、启用服务并且关注用户。
然而，创建动态 IT 环境不仅限于 Microsoft 产品。您的公司可给予更多投资来使用 IT 实现商业优势，而不只是尝试管理其急剧增加的复杂性。通过使用基础结构优化模型了解在未来两年里您的业务趋势，您可充分利用现有系统并且规划更动态的未来。
一般地说，一家公司的 IT 生命周期存在于以下四个阶段之一。基本：“我们灭火。”标准化：“我们正在加强控制。”合理化：“我们促使业务成功。”动态：“我们是战略资产。”这些阶段在 microsoft.com/io 中均有详细介绍。您可使用其中的指南分析您的基础结构并且规划其未来。通过应用动态系统概念，您可将 IT 组织转换为关键业务资产。
一旦您的组织达到动态阶段，IT 系统就成为自管理的战略业务资产。哈，IT 天堂。寻求实现动态 IT 时，从一个阶段转到另一个阶段的最佳方法就是通过 IT 管理解决方案的 System Center 系列。System Center 提供了配置工具、部署应用程序、一个操作管理器，以及其他更多内容 — 它包含了规划、部署和维护的整个 IT 生命周期。
当然，TechNet 杂志 可帮您轻松获得有关内容。本期重点讲述 System Center 解决方案系列。首先是对以下两个主要组件的整体概述：System Center Configuration Manager 2007 和 System Center Operations Manager 2007，我们还可了解部署和操作，以及如何成功管理分支机构。
您的基础结构合格程度如何？欢迎访问我们的博客 blogs.technet.com/tnmag 并且告知我们您认为动态 IT 的前景如何。—Joshua Trupin

Joshua Trupin


 工具箱: 面向 IT 专业人员的新产品
工具箱
面向 IT 专业人员的新产品
Greg Steen

管理引导配置数据
VistaBootPRO
www.vistabootpro.org
我所认识的每个 IT 专业人员都有至少一个或两个多引导计算机。目前，这些系统通常包括 Windows Vista® 或之前代码为“Longhorn”的 Windows Server® 2008 的实例。如果您正在使用这些操作系统之一运行多引导系统，您可能想了解一下由 PROnetworks 开发的 VistaBootPRO。
或许您有所了解，从 Windows Vista 开始，Microsoft 已更改了管理引导配置的方式，还会向前发展。现在，您可以获得引导配置数据 (BCD) 存储，而无需再使用像 Boot.ini 一样的可读文本文件。这为管理引导环境详细信息提供了一个更安全的、不依赖固件的方法。查看和修改 BCD 有三种基本方法：第一种方法是使用 MSConfig，这将赋予您基本访问权限以读取、修改 BCD 中的条目和对其重新排序。系统管理员可能非常熟悉第二种方法，即使用命令行工具 BCDEdit。通过此工具，您可以创建新的 BCD 存储，修改现有的存储，也可以导入或导出存储以便存档和重新使用。第三种方法是通过 BCD 的 Windows® Management Instrumentation (WMI) API 以编程方式来管理 BCD。
使用三种方法可以完成工作，但三者均非浅显易用。而这正是 VistaBootPRO 所长之处，它提供的用于在运行 Windows Vista 的计算机上修改引导配置的 GUI 比较好用一些。该工具使您只需单击一两下鼠标即可轻松地重命名操作系统条目、添加新条目、更改引导驱动器和配置超时选项。此外，使用 VistaBootPRO，您可以选择操作系统条目和设置启动参数，例如，限制操作系统可占用的 CPU、启用或禁用 Windows Vista 或 Windows Server 2008 条目的数据执行保护、减少可用于操作系统的物理内存和在调试模式中运行引导进程等。
在使用此工具对 BCD 进行任何更改之前，应备份当前存储，以防出现问题。如果您尚未进行备份，该应用程序会发出警告，并提供一种便捷方式来导出当前配置。当然，VistaBootPRO 允许您还原备份配置。
总之，VistaBootPRO 是用于管理 BCD 的一种易于使用、功能良好的应用程序。最大的好处是，它免费为用户提供。

价格：免费。
图 vistabootpro

监视服务和设备
NetGong
netgong.tsarfin.com
监视工具 — 我好像了解不太多。如果您想买新的网络服务和设备监视器，或者只是想更改监视实用程序，请查验试用 NetGong。
该应用程序在用户启动 Windows 时启动，显示在系统任务栏中。右键单击该图标，会显示快速开始或停止监视的选项。双击该图标即会出现配置主 UI，用户可在其中设置、审阅和查看受监控的主机的事件。
设置主机监视器非常简单。只需输入主机、要监视的 TCP 端口、执行测试的间隔以及希望接收的警报类型即可。您还可添加有意义的说明，修改默认的 Internet 控制消息协议 (ICMP) 设置，如超时、数据包大小和重试次数。默认情况下，NetGong 要求受监视的主机响应 ICMP 请求，但您也可以通过对不接受网络中的 ICMP 请求的非活动主机选中一个复选框来替代该默认选项。
该应用程序为您提供了四种警报类别：声音、电子邮件、消息和文件。对于声音，您可以指定要使用的 WAV 文件。对于消息，您可以定义一个文本消息，使其出现在最顶层窗口，并选择要自动还是手动关闭该窗口。电子邮件警报使您可以指定 SMTP 服务器和要发送邮件的详细信息。文件警报选项使您可以运行一种带有可配置参数、窗口模式和启动目录的可执行文件（或批文件）。对于每种警报类型，您都可以配置一个计划来定义何时发送第一个警报、最多可发送的警报数以及警报之间的故障间隔（故障数），还可以选择在恢复服务时向您发送通知。
NetGong 还可以保存结果的日志文件。您可以选择将事件记录到事件日志、文本文件或动态创建的 HTML 页面中。该应用程序允许您查看通过侦听用户指定端口的内置 Web 服务器提供的页面上的监视结果。并且，您可以发送带有刷新间隔的查询字符串参数来刷新 Web 页面以获取最新的监视事件详细信息。

价格：每台计算机 79.95 美元（企业许可证），每台计算机 59.95 美元（教育许可证），每台计算机 39.95 美元（家庭许可证）。
图 steen.toolbox.netgong

书评
Windows PowerShell：TFM
www.sapienpress.com
想必您已听说过 Windows PowerShell™。似乎每个人都在谈论它。《TechNet 杂志》还专门为其设了一个专栏（撰稿人恰好是本书的作者之一）。但您对其是否有深入了解？
一旦您了解了如何使用 Windows PowerShell，就会发现它是一种极其高效的工具，能够有效实现自动化。无论您是刚刚接触脚本编写，还是希望深入了解此新的侧重管理的脚本语言和命令行工具集的 VBScript 专家，《Windows PowerShell：TFM》（作者 Don Jones 和 Jeffery Hicks）这本书都是一个极佳的起点。该书浅显易懂，面向系统管理员，侧重于讲述对大多数管理员都很有用的内容。
该书第一部分介绍了 Windows PowerShell 环境，包括所有 cmdlet 共同拥有的参数和脚本语言的基本语法和语义。另外还介绍了重定向、执行管道、函数、变量和运行多个外壳的概念。因为 Windows PowerShell 基于 Microsoft® .NET Framework，所以它继承了托管代码的优势。（请注意，Windows PowerShell 要求使用 .NET Framework 2.0 或更高版本。）该书还介绍了一些 Framework 基础知识，包括从脚本运行的安全环境到反射、程序集和类的概念等内容。
在介绍了如何将 Windows PowerShell 与 Windows Management Instrumentation (WMI) 相关联后，作者详细说明了 Windows PowerShell 脚本语言结构，并提供了示例来帮助用户了解对象的功能及其关联的属性和方法。您还可了解如何使用不同类型的运算符（从基本算术运算符到位比较运算符）以及功能强大的正则表达式分析各项目（如 IP 地址和域控制器名称）的字符串。这对于重视学习 Windows PowerShell 的人来说，是特别有用的基础知识。
有关管理 Windows 和数据库脚本的各章介绍了 Windows PowerShell 提供的某些核心功能。用户可了解如何使用事件日志、进程、注册表、文件系统和目录服务，还可了解如何连接到数据库并在其中执行查询。
其他部分介绍了数据输出和格式化、脚本模块化、错误处理和调试。作者们还建议了一组适用于 Windows PowerShell 脚本的最佳实践，包括命名约定、为代码添加注释和通过缩进使代码更具可读性等。
用户当然希望使用该书时可非常方便地查询附录中的资料，其中一个附录是可用于所有 133 种 Windows PowerShell cmdlet 的参考，其他附录是可用于最常用的类型（以及与这些类型相关联的各种方法和属性）的参考。除提供快速查询如何使用特定 cmdlet 的功能外，这些参考还使您能够快速预览 Windows PowerShell 提供的功能的范围。

价格：订价 49.99 美元。

测试缆线
SMARTest Compact 网络缆线测试仪
www.hobbes-usa.com
到处都是缆线！作为 IT 专业人员，我们大多数人周围都布满了 CAT5 缆线。大量 CAT5 缆线：许许多多的线，跨度有数千尺。如果您负责管理这些缆线，一个性能良好、易于携带的缆线测试仪不仅会带来方便，而且是必要的。鉴于此，您可能想了解一下 Hobbes 提供的 SMARTest Compact 网络缆线测试仪。
SMARTest 设备是一种笔式缆线测试仪。它与 CAT 3、4、5、5e 和 6 网络缆线兼容，可帮助您检测出常见的缆线接线问题。具体地说，您可以检查到电缆线内的断开、短路、颠倒、线路错接、分裂对和接地问题等。
该设备由四节微型电池供电，所以测试时无需接通您的缆线，也不必将 SMARTest 连接到活动的网络连接中。要测试缆线，您只需将电缆线一端插入主单元，另一端插入可分开的远程单元即可。SMARTest 单元包含 RJ45 插座和插头（负极和正极）连接器的接口，因此您可以测试任何类型的缆线设备。甚至可以使用 SMARTest 设备来检测接线或接线板和墙上插座。
该设备的另一超炫功能是具有内置音生成，因此您可以通过正在测试的缆线发送音频信号。然后，您可以使用兼容的信号探测器（如缆线追踪器探测器，它也是 Hobbes 提供的）接收信号。
具有音生成的 SMARTest 的价格大约在 80-90 美元之间，不同零售商采用的售价不同。对于同轴缆线测试，还可选用 F 连接器适配器。

价格：订价 99.99 美元。
图 steen.toolbox.smartest

Greg Steen是一位技术专家和企业家，他酷爱钻研技术。他总是在寻找各种新工具和新方法，以帮助 IT 专业人员更为轻松地进行操作和开发。


 SQL 技术问答: 查找锁、大型查询、I/O 统计信息等
SQL 技术问答
查找锁、大型查询、I/O 统计信息等
编辑：Nancy Michell
下载这篇文章的代码: SQLQandA2007_08.exe (151KB)

问：我需要查看具有锁的所有数据库中对象的名称。应该怎样操作？

答：在 SQL Server™ 2000 中，您可以在 Master 中查询 syslocks 系统表或运行 sp_lock 来获取当前锁信息，例如：
SELECT * FROM master..syslocks
EXEC sp_lock
不过，假设您要从 sp_lock 存储过程的输出中的 ObjID（或者从 master..syslocks 的 id 列）转换实际对象 NAMES。
在 SQL Server 2005 SP1 和更早版本中，OBJECT_NAME 函数仅允许您传递一个参数：object_id。因此，为了正确获得对象名称，您必须在运行 OBJECT_NAME 之前使用当前数据库。这使得监视当前锁变得困难，因为您必须努力编写自定义代码遍历每个数据库才能获取正确的 OBJECT_NAME。
USE DBNAME
SELECT OBJECT_NAME(object_id)
SQL Server 2005 SP2 通过添加另一个参数 database_id 对此进行了改进。此新参数允许您查询对象名称，而不考虑当前连接到了哪个数据库。
OBJECT_NAME ( object_id [, database_id ] )
现在您可以查询 sys.dm_tran_locks 并检索每个数据库的对象名称，例如：
SELECT
DB_NAME(resource_database_id),
OBJECT_NAME(resource_associated_entity_id, resource_database_id)
FROM sys.dm_tran_locks
WHERE resource_type='OBJECT'
不过，请注意，它仅适用于 SQL Server 2005 SP2 和更高版本。如果您在早期版本的 SQL Server 2005 中运行它，将出现以下错误：
Msg 174, Level 15, State 1, Line 1
The object_name function requires 1 argument(s).
另一个示例，如图 1 所示，连接 sys.dm_exec_sessions 以获取关于这些锁中涉及的服务进程 ID (SPID) 的信息。有关更多信息，请参见 technet.microsoft.com/library/ms130214(sql.90).aspx 上的 SQL Server 联机丛书。
Figure 1 查找服务器进程 ID (Close Figure 1)
SELECT
DB_NAME(resource_database_id) as DBName,
OBJECT_NAME(resource_associated_entity_id, resource_database_id) AS ObjectName,
request_mode,
request_type,
request_session_id,
es.host_name,
es.login_name,
es.login_time
FROM
sys.dm_tran_locks tl
INNER JOIN sys.dm_exec_sessions es
ON tl.request_session_id=es.session_id
WHERE resource_type='OBJECT'

问：我有一个大型的动态 SQL 查询，它似乎有时超出了 NVARCHAR(max) 的长度。有没有解决此问题的方法，让我仍可以执行一个大字符串？

答：如果您超过了 NVARCHAR(max) 的长度，则您已经获得了 2GB 的查询！您可能还需要将连接的所有字符串转换为 NVARCHAR(max)。不过，另一种更简单方便的解决方法是将许多较小的字符串连接在一起，这种方法还具有适用于 SQL Server 2005 之前的各种版本的优势。示例如下：
DECLARE @q1 NVARCHAR(4000), @q2 NVARCHAR(4000), @q3 NVARCHAR(4000)
SET @q1 = 'SELECT...'
SET @q2 = 'FROM...'
SET @q3 = 'WHERE...'
EXEC (@q1 + @q2 + @q3)
提示：使用 OUTPUT 子句
现在，您可以使用数据操作语言 (DML) 语句（甚至不必使用触发器）审计所做的更改。SQL Server 2005 引入了 OUTPUT 子句作为 DML 语句的一部分，DML 语句可帮助您跟踪在任何 DML 操作期间所做的更改。OUTPUT 子句可将结果集保存到表或表变量中。
该功能与触发器对 INSERTED 和 DELETED 表执行的操作相似，后者用于访问在 DML 操作期间已修改的行。要查看它如何工作，让我们将地址表中的地址更改为原始值的反值，如下图所示。您可能还使用该代码中所显示的逻辑来跟踪您对数据进行的任何更改并将其存储在表中。
此查询的输出如下所示：
Original Value:'1234 One Microsoft Way, Redmond, Wa.' has been changed to: '.aW,dnomdeR
,yaW tfosorciM enO 4321'

更改地址
--Create the address table
Create Table Address (ProductID Int, SupplierID Int, Address Varchar(255))

--Insert data
Insert into Address Values (234,567,'1234 One Microsoft Way, Redmond, Wa.')

--Declare a table variable
Declare @Recordchanges table (change Varchar(255))

--Update the address
Update Supplier.Address
Set Address=reverse(address)

--Record the updates into the table variable
OUTPUT 'Original Value:' + DELETED.Address+' has been changed to: '+ INSERTED.Address+''
into @RecordChanges

--Query the changes from table variable
Select * from @RecordChanges

问：我拥有 Windows Server® 2003 上的关键任务 SQL Server 2005 群集安装。Microsoft® 分布式事务处理协调器 (MS DTC) 与群集仲裁在相同的组上构建群集，但是前者正在使用专用磁盘资源（MS DTC 正在共享仲裁群集组的相同网络名称和 IP 地址）。我希望该配置与 Microsoft 最佳实践一致。因此，我需要有关将 MS DTC 移动到专用群集组的建议。使用群集管理工具删除 MS DTC 服务并在专用组上重新创建它就足够了吗？

答：由于您已经拥有 MS DTC 的专用磁盘资源，您应该可以简单地删除资源并在新组中创建它。您还需要在新组中创建新的网络名称和虚拟 IP 地址。
或者，您可以在群集组中创建新的网络名称和 IP 地址并更改对新资源的依赖关系。然后，您可以将 MS DTC 拖放到新组中，专用磁盘和新资源会随之移动。

问：我需要能够查看关于数据库中物理数据库文件的 I/O 统计信息。我应该使用什么？

答：要查看这些信息，可使用系统函数 fn_virtualfilestats（在 SQL Server 2000 和 SQL Server 2005 中提供）或 sys.dm_io_virtual_file_stats（只在 SQL Server 2005 中提供）。函数将返回自上次启动 SQL Server 实例以来收集的统计信息。示例结果将显示在图 2 中。
Figure 2 查看数据库上的 I/O 统计信息 (Close Figure 2)

DbId | FileId | TimeStamp | NumberReads | NumberWrites | BytesRead | BytesWritten | IoStallMS
20 | 1 | 250765718 | 381 | 0 | 3350528 | 0 | 951
20 | 2 | 250765718 | 12 | 8 | 409600 | 491520 | 0
20 | 3 | 250765718 | 5 | 0 | 40960 | 0 | 16
了解对基本数据文件的 I/O 影响可以帮助您更好地计划数据卷上文件和文件组的物理位置、检测可能的 I/O 瓶颈、执行文件级数据库维护及其他此类任务等。该功能对于检查大型数据库（其中可能有多个文件和文件组）的 I/O 影响非常有用。
显示 SQL Server 2000 的文件 I/O 信息的查询如下所示：
SELECT *
FROM ::fn_virtualfilestats(default,default)
GO
要查看特定的 databaseID，请传递数据库的 ID，如下所示：
SELECT *
FROM ::fn_virtualfilestats(7,default)
GO
显示服务器上所有数据库的文件统计信息的 SQL Server 2005 代码如下：
SELECT *
FROM ::fn_virtualfilestats(NULL,NULL)
GO
以下查询只返回当前数据库的文件统计信息：
SELECT *
FROM ::fn_virtualfilestats(NULL,NULL)
WHERE DBID=db_id()
GO
对于 SQL Server 2005，还有一个称为 sys.dm_io_virtual_file_stats 的新系统函数，旨在最终取代原有函数 fn_virtualfilestats：
sys.dm_io_virtual_file_stats(
{ database_id | NULL },
{ file_id | NULL }
)
以下是该函数的使用方法：
SELECT * FROM sys.dm_io_virtual_file_stats(NULL,NULL)
如果您要生成更具可读性的报告，其中显示输出中的实际数据库名称和文件名称，您可以使用 SQL Server 2000 或 SQL Server 2005 上附带下载中的代码。这些代码可以从 TechNet 杂志 网站获得。

问：我需要查看删除事务是否触发触发器的简单方法。我应该如何获得该信息？

答：当处理与删除、插入和更新操作相关的触发器时，人们通常使用许多不同的技术来确定触发器是否由删除事务触发。常用的方法是比较插入和删除虚拟表的统计以查看它们是否一致。然而，有一种更简单的方法：使用 Columns_Updated 函数。
这是因为删除事务触发触发器时，Columns_Updated 总是返回 varbinary 值 0x。以下检查将验证触发器是否由删除触发：
IF Columns_Updated() = 0x
提示：初始化数据和日志文件
您知道初始化数据和日志文件会覆盖以前删除的文件中保留在磁盘上的任何现有数据吗？创建数据库时，首先通过用零填充文件来初始化数据和日志文件；将文件、日志或数据添加到现有数据库；增加现有文件的大小（包括自动增长操作）；或还原数据库或文件组。文件初始化导致这些操作花费更长的时间。但是，当数据第一次写入文件时，操作系统不必用零填充文件。
在 SQL Server 2005 中，数据文件可以即时初始化。该功能允许快速执行前面提到的文件操作。即时文件初始化会回收已用磁盘空间而不必用零填充该空间，而在将新数据写入文件时，磁盘内容将被覆盖。日志文件不能即时初始化。即时文件初始化只在 Windows XP Professional 和 Windows Server 2003 或更高版本上可用。
因为删除的磁盘内容只在将新数据写入文件时覆盖，所以删除的内容可能会由未经授权的主体访问。尽管数据库文件附加到了 SQL Server 的实例，但文件上的自由访问控制列表 (DACL) 减少了这种信息泄露威胁。该 DACL 只允许对 SQL Server 服务帐户和本地管理员的文件访问。但是，当分离文件时，不具有 SE_MANAGE_VOLUME_NAME 的用户或服务可能会访问它。备份数据库时，类似的威胁也会存在。如果备份文件没有获得适当的 DACL 保护，则删除的内容可能会由未经授权的用户或服务获得。
如果需要防止公开已删除的内容，则您应该始终确保任何分离的数据文件和备份文件都具有限制性的 DACL。另外，请通过从 SQL Server 服务帐户吊销 SE_MANAGE_VOLUME_NAME 禁用 SQL Server 实例的即时文件初始化。

Thanks to the following Microsoft IT pros for their technical expertise: Christian Bolton, Dan Carollo, Robert Davis, Jorge Guzman, Saleem Hakani, Ward Pond, Kalyan Yella, and Paolo Zavatarelli.


 实用工具特别推荐: BGInfo
实用工具特别推荐
BGInfo
Lance Whitney
下载这篇文章的代码: BgInfo v4.10 (274KB)

您尝试 解决用户的 PC 的问题，并需要有关计算机的信息（名称、IP 地址、网关、内存、可用磁盘空间等等）。通常，收集所有这些数据会强迫您搜索多个数据源或者向用户问一大堆问题。如果您需要了解的有关 PC 的所有信息都集中在一个位置，岂不是很方便？幸亏 Sysinternals 提供了免费工具 BGInfo，这才得以实现。
BGInfo（Background Information 的缩写）由 Bryce Cogswell 撰写，它查询 Windows® 工作站或服务器获得关键数据，包括从与网络相关的统计信息（IP 地址、路由器、域名、MAC 地址）到硬件和软件信息（计算机名称、内存、操作系统版本和 Service Pack 级别）的所有内容。然后，程序将所有这些数据作为壁纸的一部分显示在桌面上，所以这些信息清晰可见，无需突出显示（请参见图 1）。
图 1 BGInfo 将系统信息显示在桌面上
图 1 BGInfo 将系统信息显示在桌面上
要运行 BGInfo，只需双击 bginfo.exe 文件，不需要安装。会出现配置屏幕，以供您查看和选择要显示的数据字段。默认情况下，BGInfo 显示 24 项单独的信息。您可以删除任何不想看到的字段，以后如果再想看到该字段，可以将其重新添加回来。还可以轻松地在其他字段中移动。BGInfo 将显示任意环境变量、大多数注册表值以及来自 VBScript 和 Windows 管理规范 (WMI) 查询的输出。WMI 界面提供了通过从下拉菜单选择值来构建查询的简单方式。BGInfo 还可以访问某些文件以显示其版本信息、时间戳和内容。
显示内容是高度可自定义的。您可以更改文本的各种属性 — 对齐、字体、磅值和颜色。而且，您可以调整数据在桌面的不同部分的位置，并指定其显示区域的最大宽度（单位：英寸）。最后，BGInfo 允许您在文本数据旁边添加图形，以便显示图像，如公司徽标。反之，如果不希望在桌面上显示所有这些信息，则只需将 BGInfo 设置为系统任务栏中的一个图标。单击此图标即会全屏显示。
选择好格式之后，您可以在提交前单击“预览”按钮查看显示内容，如果显示效果很好，则即可应用。在任意 PC 上，每当需要 BGInfo 或者使其保持自动更新时，都可以手动运行 BGInfo。要定期刷新数据，请将 BGInfo.exe 文件添加到启动文件夹或将其设置为计划任务。在一台计算机上自定义 BGInfo 之后，您可能希望在其他 PC 上使用相同的设置。只需将您的设置保存为 BGI 文件，然后将其加载到运行该程序的其他计算机上。
尽管可以每次在一台计算机上运行 BGInfo，但是您可能希望在多个网络客户端上触发该程序。您可以将 bginfo.exe 文件插入到登录脚本中，该程序提供多个命令行选项以控制其行为。BGInfo 收集的数据还可以导出到外部文件（文本文件、Excel® 电子表格、Access™ 数据库或 SQL 数据库），这样就可以方便地获取您的所有网络 PC 统计信息资源。
BGInfo 随附的帮助信息全面且易于遵循。它甚至提供了有关如何编写简单的 VBScript 和 WMI 查询的提示，BGInfo 可以捕获这些查询的输出。该程序可以在所有版本的 Windows（从 Windows 95 到 Windows Vista®）上运行。可从 microsoft.com/technet/sysinternals/Miscellaneous/BgInfo.mspx 了解有关 BGInfo 的详细信息和下载此工具。

Lance Whitney是一位 IT 顾问、培训师和技术撰稿人。他已经花费了无数的时间来研究 Windows 工作站和服务器。15 年前，当他还是一名记者时，就开始涉足 IT 世界。


 网络专家: Windows Vista 中的 IPv6 自动配置功能
网络专家
Windows Vista 中的 IPv6 自动配置功能
Joseph Davies

IPv6 不仅可以将地址空间从 IPv4 中的 32 位扩展到 128 位，还具有很多其他功能。即使在不使用地址配置协议（如 DHCP for IPv6，简称 DHCPv6）的情况下，IPv6 主机也可以自动进行自我配置。
根据 RFC 2462，所有 IPv6 节点都自动为每个接口配置一个链接本地地址。IPv6 主机还可以使用路由器发现（交换路由器请求和路由器公告消息）确定其他地址和配置设置。由路由器发送的路由器公告消息中包含托管地址配置 (M) 标记和其他有状态配置 (O) 标记，这些标记指示主机是否应使用 DHCPv6 获取其他地址或配置设置。

IPv6 自动配置的类型
除了链接本地地址，主机还可以使用无状态自动配置根据收到的路由器公告消息配置地址和其他设置。这些消息可以包含一个或多个前缀信息选项，接收主机可以使用这些选项派生无状态地址。
同样，有状态自动配置指通过使用 DHCPv6 获取地址来配置地址和其他设置。当主机收到的路由器公告消息的 M 标记设置为 1 时，该主机使用有状态自动配置。
最后，主机还可以同时使用无状态和有状态自动配置，也就是既使用路由器公告中包含的地址，也使用从 DHCPv6 服务器获取的地址。

自动配置地址的状态
如果自动配置地址处于暂定状态，则表示重复地址检测 (DAD) 正验证其唯一性。有关如何执行 DAD 的信息，请参阅侧栏的“RFC 2462 IPv6 自动配置过程”。处于有效状态的地址经过验证是唯一的，并且可以用于发送和接收单播通信。有效状态包括首选状态和已否决状态。如果处于首选状态，则地址可以用于进行无限制通信。如果处于已否决状态，则地址不能用于新通信，但是使用该地址的现有通信可以继续进行。
RFC 2462 IPv6 自动配置过程
以下步骤描述了 RFC 2462 中定义的 IPv6 主机的自动配置过程：
  • 通过扩展唯一标识符 (EUI)-64 接口标识符 (ID) 派生一个暂定链接本地地址。
  • 通过发送邻居请求消息对该暂定链接本地地址执行 DAD，邻居请求消息中的目标地址设置为该暂定链接本地地址。
  • 如果收到响应邻居请求消息而发送的邻居公告消息，则该暂定链接本地地址是重复地址。停止地址自动配置。此时，必须对主机执行手动配置。
  • 如果没有收到为响应邻居请求消息而发送的邻居公告消息，则该暂定链接本地地址是唯一的。将此接口上的地址状态更改为首选。
  • 发送路由器请求消息。
  • 如果没有收到路由器公告消息，则使用 DHCPv6 获取地址和其他配置参数。
  • 如果收到了路由器公告消息，则为包含的前缀配置暂定地址，并对每个暂定地址执行重复地址检测。如果地址是唯一的，则将此接口上的地址状态更改为首选。
  • 如果路由器公告消息中的 M 标记设置为 1，则使用 DHCPv6 获取其他有状态地址。
  • 如果路由器公告消息中的 M 标记设置为 0 并且 O 标记设置为 1，则使用 DHCPv6 获取其他配置参数。

公告路由器或 DHCPv6 服务器指定地址前缀的有效生命周期和首选生命周期。超出地址的首选生命周期后，地址进入已否决状态。自动配置地址的首选生命周期在收到路由器公告后会刷新，还可以通过更新 DHCPv6 地址配置刷新。图 1 显示了自动配置地址的状态以及它们与首选生命周期和有效生命周期的关系。
图 1 自动配置地址的状态
图 1 自动配置地址的状态
除了自动配置链接本地地址之外，只能对 IPv6 主机指定地址自动配置。IPv6 路由器必须通过其他方式获取地址和配置参数，例如通过手动配置。
侧栏中的“RFC 2462 IPv6 自动配置过程”描述了 RFC 2462 定义的详细的主机 IPv6 地址自动配置过程。

Windows Vista 中的 IPv6 自动配置行为
运行 Windows Vista® 或 Windows Server® 2008（以前代号为“Longhorn”）的计算机默认情况下会为非临时自动配置的 IPv6 地址（包括公用地址和链接本地地址）生成随机接口 ID，而不是基于 EUI-64 的接口 ID。公用 IPv6 地址是全局地址，它在 DNS 中注册，服务器应用程序（例如 Web 服务器）通常将其用于传入的连接。您可以通过以下命令禁用此默认行为：
netsh interface ipv6 set global randomizeidentifiers=disabled
禁用后，IPv6 使用基于 EUI-64 的接口 ID。
利用随机派生的接口 ID，重复链接本地地址的机会很小。因此，运行 Windows Vista 或 Windows Server 2008 的计算机不用等待 DAD 完成即可使用其派生的链接本地地址发送路由器请求消息。这称为乐观 DAD；路由器发现和 DAD 同时执行，从而节省了接口初始化过程的时间。
如果没有收到路由器公告，运行 Windows Vista 或 Windows Server 2008 的计算机不会尝试通过 DHCPv6 执行有状态地址自动配置。
Windows Vista 中的 IPv6 自动配置过程
以下步骤描述运行 Windows Vista 的 IPv6 主机的自动配置过程：
  • 通过随机派生的接口 ID（默认设置）为 LAN 接口派生暂定链接本地地址。
  • 对派生的 LAN 接口链接本地地址执行 DAD（发送邻居请求消息，邻居请求消息的目标地址字段设置为该暂定链接本地地址）。
  • 对 LAN 接口执行路由器发现（以该暂定链接本地地址为源地址发送路由器请求消息）。
  • 如果收到了为响应步骤 2 中发送的邻居请求消息而发送的邻居公告消息，则将该链接本地地址标记为重复地址。
  • 如果没有收到为响应邻居请求消息而发送的邻居公告消息，则将该 LAN 接口上的链接本地地址的状态更改为首选。
  • 如果没有收到路由器公告消息，则停止对该 LAN 接口执行 IPv6 地址自动配置。转至步骤 13。
  • 如果收到路由器公告消息，则根据步骤 1 中派生的随机接口 ID 创建与消息中的全局或唯一的本地地址前缀相对应的暂定公用地址，并执行 DAD。
  • 使用随机派生的新随机接口 ID 创建与消息中的全局或唯一的本地地址前缀相对应的暂定公用地址，并执行 DAD。
  • 对于每个新地址，如果没有收到响应邻居请求消息的邻居公告消息，则将该 LAN 接口上的地址的状态更改为首选。
  • 如果路由器公告的 M 标记和 O 标记都设置为 0，则停止对 LAN 接口执行 IPv6 自动配置。转至步骤 13。
  • 如果路由器公告的 M 标记设置为 1，则使用 DHCPv6 获取有状态 IPv6 地址和其他配置设置。
  • 如果路由器公告消息中的 M 标记设置为 0 并且 O 标记设置为 1，则使用 DHCPv6 获取其他配置设置。
  • 根据 LAN 接口的 IPv4 地址派生链接本地 ISATAP 地址，并将其分配给 ISATAP 隧道接口。
  • 尝试将主机名称“ISATAP”解析为 IPv4 地址。
  • 如果无法解析主机名称“ISATAP”，则停止 IPv6 配置。
  • 如果可以将主机名称“ISATAP”解析为 IPv4 地址，则向 ISATAP 路由器发送 IPv4 封装的路由器请求。
  • 如果从该 ISATAP 路由器收到了路由器公告，则创建与已播发的全局或唯一本地地址前缀相对应的其他 ISATAP 地址，并将其分配给 ISATAP 隧道接口。

自动对 Windows Vista 配置地址
如前所述，Windows Vista 和 Windows Server 2008 的 IPv6 协议自动使用随机派生的接口标识符对所有 LAN 接口配置链接本地地址。
如果收到的路由器公告包含一个全局或唯一本地前缀，则 IPv6 会使用相同的随机派生接口 ID 配置全局或唯一本地地址，并将其分配给收到路由器公告的 LAN 接口。此类地址称为公用地址。
默认情况下，Windows Vista 中的 IPv6 还会使用不同的随机派生接口 ID 配置临时全局或唯一本地地址，并将其分配给收到路由器公告的 LAN 接口。临时地址在 RFC 3041 中定义，在一定程度上使客户端发起的通信成为匿名通信。而 Windows Server 2008 中的 IPv6 默认情况下不创建临时地址。您可以使用以下命令启用临时地址：
netsh interface ipv6 set privacy-enabled
如果收到的路由器公告消息中的 M 标记设置为 1，则 IPv6 使用 DHCPv6 对 LAN 接口配置其他全局或唯一本地地址。
IPv6 还会为该主机的每个 LAN 接口创建一个站内自动隧道寻址协议 (ISATAP) 隧道接口。RFC 4214 描述了 ISATAP IPv6 转换技术。利用 ISATAP，IPv6 主机可以通过使用 IPv4 头封装 IPv6 包在仅支持 IPv4 的 Intranet 内进行通信。有关 ISATAP 的详细信息，请参阅“IPv6 转换技术”。
对于每个 ISATAP 隧道接口，IPv6 都会为分配给其相应 LAN 端口的 IPV4 地址配置链接本地 ISATAP 地址。例如，如果一个 LAN 接口分配的 IPv4 地址为 192.168.91.211，则对于与之相对应的 ISATAP 隧道接口，IPv6 会为其分配链接本地 ISATAP 地址 FE80::0:5EFE:192.168.91.211。
ISATAP 主机还执行 ISATAP 路由器发现。为了从 ISATAP 路由器接收路由器公告，IPv6 默认情况下必须能够将主机名称“ISATAP”解析为 IPv4 地址。这是通过基于 Windows 的主机名称解析方法（如 DNS）完成的。解析该名称后，主机向 ISATAP 路由器发送 IPv4 封装的路由器请求。然后，ISATAP 路由器会向该主机发送 IPv4 封装的路由器公告。根据收到的路由器公告内容，IPv6 还对 ISATAP 隧道接口配置全局或唯一本地 ISATAP 地址。
Windows Vista 还支持 6to4 和 Teredo 转换技术。但是，为了简化问题，在此我不讨论基于 Windows Vista 的 IPv6 主机如何自动配置 6to4 和 Teredo 隧道接口。
侧栏的“Windows Vista IPv6 自动配置过程”描述了基于 Windows Vista 的 IPv6 主机的地址自动配置过程，该主机的一个 LAN 接口是通过对其 LAN 或 ISATAP 隧道接口添加全局或唯一本地地址前缀配置的。
例如，一个运行 Windows Vista 的主机具有一个 LAN 接口。在该主机的 LAN 接口收到的路由器公告中，M 和 O 标记设置为 0，并且包含前缀 2001:DB8:D005:F282::/64 和 FD4A:3A9:27A1:F282::/64。该主机没有收到来自 ISATAP 路由器的路由器公告消息。图 2 是对该示例主机运行命令
Figure 2 netsh interface ipv6 show address 的输出 (Close Figure 2)
Interface 1: Loopback Pseudo-Interface 1

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Other   Preferred  infinite infinite ::1

Interface 8: Local Area Connection

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Temporary Preferred 6d19h37m21s 6d19h37m21s 2001:db8:d005:f282:ed46:5dd4:5439:2e1c
Public  Preferred  infinite infinite 2001:db8:d005:f282:3521:12fa:2c44:87d1
Temporary Preferred 6d19h37m21s 6d19h37m21s fd4a:3a9:27a1:f282:ed46:5dd4:5439:2e1c
Public   Preferred  infinite infinite fd4a:3a9:27a1:f282:3521:12fa:2c44:87d1
Other   Preferred  infinite infinite fe80::3521:12fa:2c44:87d1%8

Interface 17: Local Area Connection* 9

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Other   Preferred  infinite infinite fe80::5efe:10.47.181.92%17

netsh interface ipv6 show address
后得到的输出结果示例。在该图中，与名为“本地连接”的 LAN 接口对应的 ISATAP 隧道接口名为“本地连接* 9”。
除了自动配置地址外，Windows Server 2008 和 Windows Vista 的 IPv6 协议还支持使用以下命令
netsh interface ipv6 add address
或通过“网络连接”文件夹中连接属性的 Internet 协议版本 6 (TCP/IPv6) 组件手动配置静态 IPv6 地址。
在本月的专栏中，我假设您已经对 IPv6 寻址和协议操作有了大致了解。如果您需要有关此主题的更多信息，我建议您从“IPv6 简介”白皮书开始，该白皮书可以从以下位置找到：microsoft.com/technet/ network/ipv6/introipv6.mspx。

Joseph Davies是 Microsoft 的一位技术撰稿人，从 1992 年起一直从事 Windows 网络主题的培训和编写工作。他曾为 Microsoft Press 编写了五本著作，是每月的在线 TechNe 网络专家专栏的作者。


 Windows PowerShell: 筛选的力量
Windows PowerShell
筛选的力量
Don Jones

在上个月的专栏中，我论述了 Windows PowerShell 管道的强大功能和灵活性，它可以使您将一个数据集（更准确地说，是一组对象流）从一个 cmdlet 传递到另一个 cmdlet，进一步优化该数据集直到它完全符合您的需要。在我的论述中，我提到您自己的脚本
（不只是 cmdlet）也可以利用管道。本月我要详细论述该主题。
我在 Windows PowerShell™ 中最常做的事情之一是编写通常通过 Windows® Management Instrumentation (WMI) 对多台远程计算机执行操作的脚本。对于任何处理远程计算机的任务，在脚本运行时，这些计算机中的一台或多台总是有可能不可用。因此，我需要我的脚本能够解决这个问题。
当然，我可以使用许多方法使脚本具备处理 WMI 连接超时的能力，但是我特别不喜欢该方法，因为超时期限本身太长 — 默认情况下大约为 30 秒。这样，如果我的脚本必须等待多次超时发生，它的运行将更加缓慢。相反，我要脚本执行一次快速检查，以查看在尝试连接到给定计算机前该计算机是否实际上处于联机状态。

Windows PowerShell 范例
在其他脚本编写语言（如 VBScript）中，我通常一次处理一台计算机。也就是说，我将检索一个计算机名称 — 可能从存储在文本文件中的名称列表中检索 — 并 ping 该系统以查看其是否可用。如果可用，我将建立 WMI 连接并执行我需要完成的所有其他工作。这是一种常见的脚本式方法。实际上，我可能要在一个循环中编写所有我的代码，然后对我需要连接的每台计算机重复执行一次该循环。
然而，由于 Windows PowerShell 基于对象并且能够直接处理对象组或集合，它更适用于批处理操作。Windows PowerShell 中的范例不是要处理单一的对象或数据段，而是要处理整个组，一点点优化该组，直到完成您打算做的任何事情。例如，我想立刻读取整个名称集，而不是一次检索列表中的一个计算机名称。我要编写单一例程，该例程接受名称集，ping 这些计算机，然后输出可以连接的计算机名称，而不是在循环中 ping 每台计算机。我的过程中的下一步是建立到其余名称（即可通过 ping 访问的名称）的 WMI 连接。
Windows PowerShell 对多项任务使用这种方法。例如，要获得正在运行的服务的列表，我可以使用与以下类似的内容：
Get-Service | Where-Object { $_.Status –eq "Running" }
图 1 显示了我的计算机上显示的输出情况。我使用 Get-Service 检索所有服务，通过管道将其输送到 Where-Object，然后筛选出所有未运行的服务；而不是一次检查一项服务。这差不多就是我用脚本要做的事情：获得计算机名称列表，筛选出所有不可 ping 的名称，然后将可 ping 的计算机列表传送到下一步。
图 1 获得可 ping 的计算机列表
图 1 获得可 ping 的计算机列表

筛选功能
尽管我可以编写自己的 cmdlet 来实现此功能，但是我不想这样做。编写 cmdlet 需要 Visual Basic® 或 C# 以及大量的 Microsoft® .NET Framework 开发专业知识。更重要的是，在该任务中它要求更多的参与，而我不想投入这么多。幸运的是，Windows PowerShell 允许我编写一种叫做筛选的特殊功能，它可以在管道内完美地发挥作用。筛选功能的基本轮廓如下所示：
function <name> {
  BEGIN {
    #<code>
  }
  PROCESS {
    #<code>
  }
  END {
    #<code>
  }
}
正如您所看到的，该功能包含三个独立的脚本块，分别命名为 BEGIN、PROCESS 和 END。筛选功能 — 即旨在在管道内工作以筛选对象的功能 — 可以拥有这三个脚本块的任何组合，具体取决于您要做什么。它们的工作方式如下：
  • 在首次调用您的功能时，BEGIN 块执行一次。您可以用它来执行设置工作，如果需要的话。
  • PROCESS 块对传送到功能的每个管道对象执行一次。$_ 变量代表当前的管道输入对象。筛选功能中需要 PROCESS 块。
  • 在处理完所有管道对象后，END 块执行一次。这可用于任何收尾工作（如果需要）。
在我的示例中，我要生成一个筛选功能，该功能接受名称集合作为输入对象，然后尝试 ping 每个对象。可以成功地 ping 的每个对象将输出到管道；不可以 ping 的系统将被删除。由于 ping 功能不需要任何特殊的设置或收尾工作，我将仅使用 PROCESS 脚本块。图 2 中的代码提供了完整的脚本。
Figure 2 Ping-Address 和 Restart-Computer (Close Figure 2)
1  function Ping-Address {
2    PROCESS {
3      $ping = $false
4      $results = Get-WmiObject -query `
5      "SELECT * FROM Win32_PingStatus WHERE Address = '$_'"
6      foreach ($result in $results) {
7        if ($results.StatusCode -eq 0) {
8          $ping = $true
9        }
10      }
11      if ($ping -eq $true) {
12        Write-Output $_
13      }
14    }
15  }
16
17  function Restart-Computer {
18    PROCESS {
19      $computer = Get-WmiObject Win32_OperatingSystem -computer $_
20      $computer.Reboot()
21    }
22  }
23
24  Get-Content c:\computers.txt | Ping-Address | Restart-Computer
请注意，我已定义了两个功能：Ping-Address 和 Restart-Computer。在 Windows PowerShell 中，调用功能之前必须对其进行定义。因此，第一个可执行的脚本行是行 24 ，它使用 Get-Content cmdlet 来从文件中获得计算机名称列表（每行显示一个计算机名称）。该列表（从技术角度上说，是字符串对象集合）将通过管道传递到 Ping-Address 功能，它会筛选出不能 ping 的任何计算机。结果将通过管道传递到 Restart-Computer，该功能使用 WMI 来远程重新启动可以 ping 的每台计算机。
Ping-Address 功能执行 PROCESS 脚本块，这意味着功能需要输入对象集合。PROCESS 脚本块自动处理该输入 — 我不必定义任何输入参数来包含该输入。我通过将变量 $ping 设置为 $false 来启动行 3 上的过程，$false 是代表布尔值 False 的内置 Windows PowerShell 变量。
然后，我使用本地 Win32_PingStatus WMI 类来 ping 指定的计算机。请注意，行 5 上代表当前管道对象的 $_ 变量将嵌入 WMI 查询字符串内。当字符串包含在双引号中时，Windows PowerShell 总是尝试用内容替换变量（如 $_），因此您不必浪费时间考虑字符串连接。我正在行 5 上使用该功能。
行 6 是检查 ping 结果的循环。如果这些结果中的任意一个成功返回（也就是说，StatusCode 为零），我会设置 $ping 等于 $true 来指示成功。在行 11 上，我检查 $ping 是否已设置为 $true。如果是，我会将原始输入对象输出到默认输出流。Windows PowerShell 自动管理默认输出流。如果该功能位于管道的末端，则输出流将转换为文本表示形式。如果管道中有更多的命令，则输出流的对象 — 在本例中，是包含计算机名称的字符串对象 — 将传递到下一个管道命令。
Restart-Computer 功能稍微简单一些，但是它也使用 PROCESS 块以便轻松地加入到管道中。在行 19 上，该功能连接到指定的计算机并检索其 Win32_OperatingSystem WMI 类。行 20 执行类的 Reboot 方法来重新启动远程计算机。
同样，行 24 是实际执行所有操作的位置。当然，运行该脚本时您应该非常小心 — 它旨在重新启动在 c:\computers.txt 中指定的每台计算机，如果您不特别注意该文本文件中的名称，肯定会导致灾难性的后果！

后续步骤
该脚本并非完全无懈可击。我还应该意识到 WMI 错误可能与基本连接不相关，如防火墙阻止远程计算机上的必要端口或 WMI 安全错误。我可以通过实施陷阱处理程序处理这些问题 — 这听起来像未来专栏的理想主题。
此外，该脚本正在执行一个相当严重的操作 — 重新启动远程计算机。任何尝试这种潜在的危险操作的脚本都应该实施两个常见的 Windows PowerShell 参数，–Confirm 和 –WhatIf。解释如何进行此操作在这里一言难尽，但可以在未来专栏中进行专题论述。同时，请访问 Windows PowerShell 团队博客；设计师 Jeffrey Snover 会介绍该主题。
即使不了解这些特性，您也可以很好地理解筛选功能的作用。我将在随后的专栏中完善该技术，向您展示这些功能如何很好地模块化可重复使用的代码以及从总体上增强脚本的功能。

Don Jones是 SAPIEN Technologies 的首席脚本权威和 Windows PowerShell:TFM (SAPIEN Press, 2007) 的合著者。可通过 www.ScriptingAnswers.com 与他联系。


 您好，脚本专家！: 您是谁？
您好，脚本专家！
您是谁？
Microsoft 脚本专家
下载这篇文章的代码: HeyScriptingGuy2007-082007_08.exe (152KB)

不久前，编写此专栏的脚本专家还在通过电视观看棒球比赛。当比赛结束时，他决定阅读杂志，但仍开着电视机。看完杂志后，他抬头看了看电视，结果发现正在播放的是第二次世界大战电影。实际上，当他看电视的时候，影片正好播放这些经典场景之一：深夜，一个年轻美国步兵正在站岗，突然他听到有声音。
“你是谁？”哨兵叫道。
“是我，史密斯中士，”有声音回答道。
“史密斯中士？这个部队就没有史密斯中士这个人。”
“我是新来的，刚从 A 连队转来。”
“噢，是吗？从 A 连队转来的？那好，史密斯：谁赢得了 1934 年世界职业棒球大赛冠军？”
“纽约杨基棒球队。”
回答错误，“史密斯”！（正如您所料，此人迅速被逮捕并关入监狱。）任何一个真正的美国人都知道 St. Louis Cardinals（如您所知，Dizzy Dean 和 Gas House Gang）赢得了 1934 年的世界职业棒球大赛冠军。如果有人不知道这一点，那么只有一种可能：他是间谍。
如果阅读本月专栏的人不知道 St. Louis Cardinals 赢得了 1934 年的世界职业棒球大赛冠军，那么，我们能说的就是：诡计就被识破了；我们知道您是个间谍。我们希望您将为了体面而主动去最近的 FBI 办公室。或至少给他们打个电话；当遇到间谍时，FBI 将带走并移送。
根据编写此专栏的脚本专家所观看的内容，他认识到他已经有回答哨兵第二个问题的大好机会：谁赢得了 1966 年的世界职业棒球大赛冠军？Baltimore Orioles。1960 年的世界职业棒球大赛？Pittsburgh Pirates。1994 年的世界职业棒球大赛？哈！一个陷阱式问题：1994 年没有举行世界职业棒球大赛。
但是，在当今这个时代，他要回答第一个问题可能相当困难：您是谁？回答这个问题并不像在二十世纪四十年代那么简单。毕竟，单独使用 Active Directory®，用户可以拥有任意数目的不同身份，包括：
  • 名 (givenName)。
  • 姓 (sn)。
  • 显示名 (displayName)。
  • 用户主要名称 (userPrincipalName)。
  • 登录名 (samAccountName)。
  • 可分辨名称 (distinguishedName)。
所有这些名称均标识同一个人的身份，需要记住它们以在不同情况下使用。这才是问题所在。大多数用户知道他们的名和姓。但是，如果您问某用户，“您的可分辨名称是什么？”仅有少数用户能够回答上来，“嗯，这个问题简单！我的信息是 CN=Ken.Myer，OU=Finance，DC=fabrikam，DC=com。但是我的朋友们都叫我 CN=Ken.Myer。”
作为系统管理员或服务台人员，您需要知道这些名称。但是您应该如何获得此类信息？嗯，一种方法是引导您的用户最终说出他们的可分辨名称。这种方法可能有效，但现在大多数人力资源部门不提倡这种做法。所以您也许不得不回退到计划 B：脚本。哪种脚本？嗯，对于初学者而言，图 1 中的脚本如何？
Figure 1 使用 ADSystemInfo 检索用户属性 (Close Figure 1)
On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName

Set objUser = GetObject("LDAP://" & strUser)
WScript.Echo "First Name: " & objUser.givenName
WScript.Echo "Last Name: " & objUser.sn
WScript.Echo "Display Name: " & objUser.displayName
WScript.Echo "User Principal Name: " & objUser.userPrincipalName
WScript.Echo "SAM Account Name: " & objUser.sAMAccountName
WScript.Echo "Distinguished Name: " & objUser.distinguishedName
朋友，要是史密斯中士学过 VBScript 该多好，是吧？此脚本利用了罕为人知（但很有用）的名为 ADSystemInfo 的 ADSI 对象。这是一个超酷的小对象，它不仅能够返回有关本地计算机本身及其所属域的信息，还能够返回有关当前登录到本地计算机的用户的各种信息。例如，请看图 2。
Figure 2 显示各类域信息 (Close Figure 2)
On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")

Wscript.Echo "User name: " & objSysInfo.UserName
Wscript.Echo "Computer name: " & objSysInfo.ComputerName
Wscript.Echo "Site name: " & objSysInfo.SiteName
Wscript.Echo "Domain short name: " & objSysInfo.DomainShortName
Wscript.Echo "Domain DNS name: " & objSysInfo.DomainDNSName
Wscript.Echo "Forest DNS name: " & objSysInfo.ForestDNSName
Wscript.Echo "PDC role owner: " & objSysInfo.PDCRoleOwner
Wscript.Echo "Schema role owner: " & objSysInfo.SchemaRoleOwner
Wscript.Echo "Domain is in native mode: " & objSysInfo.IsNativeMode
但是，今天我们只关心 UserName 属性。UserName 有何特殊之处？嗯，它正好与 distinguishedName 属性相对应。那么 distinguishedName 又有何特殊之处呢？嗯，distinguishedName 与 UNC 文件路径类似：正如 UNC 路径使我们能够唯一地标识网络的某一位置上的文件一样，distinguishedName（例如，CN=Ken.Myer，OU=Finance，DC=fabrikam，DC=com）使我们能够唯一标识在 Active Directory 中的用户帐户。这样，我们就能够绑定到该用户帐户了。而且，一旦建立该连接，我们就能够检索有关用户的任何信息 — 包括他是谁。
这也正是我们在向您展示的第一个脚本中所执行的操作。首先，我们创建了 ADSystemInfo 对象的实例，然后将 UserName 属性值赋给名为 strUser 的变量：
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
请注意，我们不必在此执行任何操作。例如，我们不必指定用户名、用户域或用户帐户所在的 OU；ADSystemInfo 为我们做好了这一切。一旦获得了用户的 distinguishedName，我们就能够使用以下代码行绑定到该用户的用户帐户：
Set objUser = GetObject("LDAP://" & strUser)
同样，一旦建立连接，我们就能够回显该帐户的任一 Active Directory 属性的值。在我们的示例脚本中，我们只回显了用户的某些名称属性，但我们还可以同样轻松地检索电话号码、办公地点和电子邮件地址等。
那太好了。您必须执行的操作就是将此脚本分发给您的所有用户，然后他们将再也不必问自己，“我是谁？”（或者，如果他们问此问题，他们也将有一个轻松快捷的方法获得答案。）但是，如果是相关问题：您是谁？这是能够识别登录到本地计算机的用户的问题。但到底您如何才能确定谁登录到了远程计算机呢？如您所料，这是一个更为棘手的问题。
很抱歉，我们也想到了此问题；遗憾的是，您无法直接将我们的 ADSystemInfo 脚本指向远程计算机。原因是只能在本地创建 ADSystemInfo 对象。这就给予了我们三种可能：
  • 在可轻松访问的位置创建记录登录用户姓名的登录脚本。
  • 使用 WMI class Win32_ComputerSystem 和 UserName 属性。
  • 执行其他操作。
第一个选项听起来非常吸引人。您可能已经注意到，ADSystemInfo 对象能够返回计算机的可分辨名称（ComputerName 属性）以及用户的可分辨名称。如果您愿意的话，请看图 3 中所示的示例脚本。
Figure 3 登录脚本 (Close Figure 3)
On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")

strUser = objSysInfo.UserName
strComputer = objSysInfo.ComputerName

Set objUser = GetObject("LDAP://" & _
    strUser)
strUserName = objUser.displayName

Set objComputer = GetObject("LDAP://" & _
    strComputer)
objComputer.Description = strUserName
objComputer.SetInfo
我们正在执行何种操作？首先，我们要获取 UserName 和 ComputerName 属性的值并将它们存储在一对变量（strUser 和 strComputer）中。然后，我们在 Active Directory 中绑定到用户帐户（与前面的操作一样），检索 displayName 属性值（与前面的操作一样）并将该值存储在名为 strUserName 的变量中。非常简单，对吧？
这样，我们就能够使用以下代码行连接到 Active Directory 计算机帐户：
Set objComputer = GetObject("LDAP://" & _
    strComputer)
建立连接后，我们将用户的 displayName 分配给计算机的 Description 属性，然后调用 SetInfo 方法以将此更改写入 Active Directory：
objComputer.Description = strUserName
objComputer.SetInfo
为什么要这样做？道理很简单。假定 Ken Myer 登录计算机 atl-ws-01。请猜测一下，atl-ws-01 的 Description 属性值将是什么？答对了：Ken Myer，当前登录到该计算机的用户。想知道谁登录到了 atl-ws-01？只需查看 Description 属性即可。
现在，总的来说，此方案效果相当好 — 但如果您拥有一个注销脚本，能够在用户注销以后清除 Description 属性，那么效果将更好。但这并不是万无一失的解决方案。为什么呢？因为登录脚本不会始终运行。例如，如果用户使用 RAS 登录，那么通常它们就不会运行。同样，如果用户断开自己的网络连接，使用缓存的凭据登录，然后再将计算机连接到网络，那么登录脚本也不会运行。假定用户未注销就关闭了计算机。这就意味着他的注销脚本将永远不会运行。在此情况下，即使该计算机并未运行，Ken Myer 也仍可能能够登录到 atl-ws-01。换句话说，这是一项有用的技术，但也存在问题。
那么选项 2，使用 Win32_ComputerSystem 类，怎么样？同样，此选项通常有效，但 Win32_ComputerSystem 类的问题是它并不是始终返回已登录用户的名称，尤其是对于不具有管理员权限的用户（以及对于运行 Windows® 2000 的计算机）。图 4 中的脚本也许将告诉您登录到计算机的用户，但同样没有任何保证。
Figure 4 使用 WMI 查找登录的用户 (Close Figure 4)
strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")

For Each objItem in colItems
  Wscript.Echo objItem.UserName
Next
顺便说一下，在此情况下将以 domain\username 的格式返回 UserName 属性。换句话说：FABRIKAM\kenmyer。
噢，我们几乎忘了：即使确实返回了一个名称，也不意味着用户真的登录到了该计算机。当 Ken Myer 注销 atl-ws-01 后，他的名字以 UserName 属性值的形式被保留，并且直到他人登录时其姓名才会被取代。
真是让人厌烦。
但请稍候；这不会使我们成为间谍。我们可以采取下面的另一种方法。如果有人登录到某计算机，那么 Explorer.exe 进程必定正在运行。一般来讲，如果 Explorer.exe 没有运行，则没有人登录该计算机。由于 Explorer.exe 使用已登录用户的凭据运行，所以通过使用类似于图 5 中所示脚本的脚本，我们几乎总是能够确定登录到某计算机的用户。
Figure 5 确定 Explorer.exe 的所有者 (Close Figure 5)
strComputer = "atl-ws-01"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
  ("Select * from Win32_Process Where Name = 'explorer.exe'")

If colItems.Count = 0 Then
  Wscript.Echo "No one is logged on to the computer."
Else
  For Each objProcess in colItems
    objProcess.GetOwner strUser, strDomain
    Wscript.Echo strDomain & "\" & strUser
  Next
End If
您可以看到，在这种情况下，我们将连接到远程计算机（准确地说，是 atl-ws-01）上的 WMI 服务。然后，我们使用以下代码行检索名为“Explorer.exe”的 Win32_Process 类的所有实例的集合：
Set colItems = objWMIService.ExecQuery _
  ("Select * from Win32_Process Where " & _
  "Name = 'explorer.exe'")
现在要做什么？嗯，正如我们刚刚所说的，如果 Explorer.exe 没有运行，那么很可能没有人登录到该计算机。我们如何知道 Explorer.exe 是否正在运行？一种非常简单的方法是查看该集合的 Count 属性值。如果 Count 等于 0，那么我们拥有的是空集合；而只有在 atl-ws-01 上没有运行 Explorer.exe 实例时，我们才会拥有空集合。如果是这样，我们将回显一条消息，表明没有人登录到该计算机：
Wscript.Echo "No one is logged on " & _
"to the computer."
如果 Count 不等于 0，我们将建立一个 For Each 循环，以遍历名为 Explorer.exe 的进程的集合（我们假定在集合中总是仅包含一个项目）。对于每个 Explorer.exe 实例，我们将调用 GetOwner 方法以确定 Explorer.exe 正在使用谁的帐户运行：
objProcess.GetOwner strUser, strDomain
请注意，我们将一对输出参数传递给 GetOwner：strUser 和 strDomain。输出参数仅仅是我们命名并提供给某一方法的变量；然后该方法将为这些输出参数赋值。在此例中，会将已登录用户的登录名 (kenmyer) 赋给 strUser，将已登录用户的域名 (FABRIKAM) 赋给 strDomain。我们接下来要做的是回显这两个输出参数的值：
Wscript.Echo strDomain & "\" & strUser
您知道吗？这相当好。但我们可以更进一步。当我们使用 GetOwner 方法时，我们将获得登录到该计算机的用户的登录名 (samAccountName)。这很好，但是，正如我们前面提到的，用户除了 samAccountName 外还拥有各种名称。要如实地回答“您是谁？”这个问题，最好知道用户的 displayName。但我们无法使用 GetOwner 确定用户的其他名称，是吧？
是的，无法确定。不过，我们可以获得 samAccountName，将其插入到 Active Directory 搜索脚本，然后使用该登录名查找并绑定到用户帐户（由于 samAccountNames 在域中必须是唯一的，该任务变得更容易）。而且，一旦绑定到用户帐户，我们就能够回显任一 Active Directory 属性的值，包括 displayName。
我们没有时间详细介绍图 6 中的脚本；有关搜索 Active Directory 的更多信息，请访问“都德，我的打印机在哪儿？”。只需说明此脚本确定已登录用户的登录名，搜索 Active Directory 以查找具有该登录名 (samAccountName) 的用户，绑定到所涉及的用户帐户，然后回显该用户的 displayName 就足够了。所有这一切可谓轻而易举，不费吹灰之力！
Figure 6 绑定到已登录用户 (Close Figure 6)
strComputer = "atl-ws-01"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
  ("Select * from Win32_Process Where Name = 'explorer.exe'")

If colItems.Count = 0 Then
  Wscript.Echo "No one is logged on to the computer."
Else
  For Each objProcess in colItems
    objProcess.GetOwner strUser,strDomain
  Next
End If

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = "SELECT displayName FROM " & _
  "'LDAP://DC=wingroup,DC=fabrikam,DC=com' WHERE " & _
    "objectCategory='user' " & _
    "AND samAccountName = '" & strUser & "'"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
  Wscript.Echo objRecordSet.Fields("displayName").Value
  objRecordSet.MoveNext
Loop
那么从今天开始，我们的主要结论是什么？（顺便说一下，也就是 Microsoft 人员的意见。如果您希望将脚本专家逼得发疯，仅仅走近他，然后对他说一些如“我们需要排列所有利益相关方的主要结论、操作项和非目标的优先级”的话。）嗯，首先，现在我们知道如何获取有关登录到计算机（本地计算机或远程计算机）的用户的信息。更重要的是，如果我们能穿越时空，然后发现自己置身于第二次世界大战中，我们知道该干什么：确保您阅读了本专栏（所以您就可以回答“您是谁”这个问题了），还有 — 无论做什么事 — 要始终随身携带一个世界职业棒球大赛冠军的列表。毕竟，您不知道何时有人将问到您，“谁赢得了 1903 年的世界职业棒球大赛冠军？”
注意：Boston Red Sox。顺便说一下，这是第一届世界职业棒球大赛。现在，你认为谁赢得了 1904 年的世界职业棒球大赛？您什么意思，您不知道吗？请稍等我们片刻，我们需要打个电话....

Microsoft 脚本专家为 Microsoft 工作，也就是受雇于 Microsoft。在玩、教或看棒球（以及各种其他活动）的闲暇之余，他们还负责维护 TechNet 脚本中心。请访问 www.scriptingguys.com 进行查看。


 安全观察: Windows 中的 PKI 增强功能
安全观察
Windows 中的 PKI 增强功能
John Morello
本专栏基于 Windows Server 2008 的预发布版。文中的所有信息均可能发生变更。

Windows 从 Windows 2000 版本起即开始为公钥基础结构 (PKI) 提供强健的、平台范围的支持。该版本包含第一个本机证书颁发机构功能，引入了自动注册，并为智能卡身份验证提供支持。在 Windows XP 和 Windows Server 2003 中，这些
功能已得到扩展，可通过版本 2 证书模板提供更灵活的注册选项，并支持自动注册用户证书。在 Windows Vista® 和 Windows Server® 2008（以前的代号为“Longhorn”）中，Windows® PKI 平台又向前迈了一步，支持高级算法、实时有效性检查，可管理性也更好。本专栏将讨论 Windows Vista 和 Windows Server 2008 中新增的 PKI 功能，以及企业如何利用这些功能来降低成本和增加安全性。
Windows Vista 和 Windows Server 2008 中的 PKI 围绕四个主要核心方面进行了改进：加密、注册、可管理性和吊销。除了这些特定功能的改进外，Windows PKI 平台还受益于其他的操作系统改进（如角色管理器），这些改进使得创建和部署新的证书颁发机构 (CA) 更加轻松。另外，Windows 的其他许多部分都能够利用 PKI 平台中的改进，如在 Windows Vista 中支持使用智能卡存储加密文件系统 (EFS) 密钥。

加密
对加密服务核心的改进体现在两方面。首先，通过引进下一代加密技术 (CNG)，Windows 现在提供一种可插入的、协议不可知的加密功能，此功能使得以编程方式开发和访问独立算法更加轻松。其次，CNG 还新增了对 Suite B 算法的支持，该算法在 2005 年由 National Security Agency (NSA) 引入。
CNG 是 Microsoft 的一个新型核心加密界面，也是针对将来基于 Windows 和支持加密的应用程序建议使用的 API。CNG 提供了大量的以开发人员为目标对象的功能，其中包括更方便的算法发现和替换、可替换的随机数生成器和一个内核模式加密 API。提供这些新功能的同时，CNG 还与其处理器 CryptoAPI 1.0 中提供的算法集完全向后兼容。目前，CNG 正在接受通过联邦信息处理标准 (FIPS) 140-2 级别 2 认证以及成为所选平台的通用准则所需的评估。
CNG Suite B 支持包括所需的所有算法：AES（所有密钥大小）、SHA-2 系列（SHA-256、SHA-384 和 SHA-512）哈希算法、椭圆曲线 Diffie-Hellman (ECDH) 以及以美国国家标准与技术研究院 (NIST) 标准原始曲线 P-256、P-384 和 P-521 为标准的椭圆曲线数字签名算法 (ECDSA)。NSA 已表明，经过认证的 Suite B 实现将用于保护以下类别的信息：Top Secret、Secret 以及过去被描述为 Sensitive-But-Unclassified 的隐私信息。所有 Suite B 算法的开发都采取公开形式，其他一些政府也在探索尝试采用 Suite B 算法作为国家标准。
对 Windows PKI 平台的这些低级别改进为开发人员保护数据提供了更安全的方法，同时还创建了易于维护和随时间改进的子系统。由于 CNG 是可插入的体系结构，所以可根据需要添加新算法，CNG 会从应用程序层抽象出这些提供程序。最终结果是，Windows Vista 和 Windows Server 2008 的设计旨在为开发支持 PKI 的应用程序和服务提供高级的可发展平台。

注册
Windows 中的证书注册体验得到了显著改善，提供新的基于向导的注册工具、更佳的证书过期处理、新 API、“代表注册”功能以及凭据漫游等功能。这些增强功能通过集中管理的方式更加轻松地在企业范围内部署证书，降低对用户的影响，从而降低了 PKI 的总体拥有成本。
从注册的角度来看，最显著的变化就是如图 1 和 2 中所示的新证书注册用户界面。此用户界面取代了旧的、受限制的用户界面，旧界面不具备在注册过程中接受来自用户的数据的功能。新界面允许用户在注册过程中输入数据（如果管理员将证书模板配置为要求在注册过程中输入数据）。该界面还针对用户可能无法对特定模板注册的原因进行了清楚的说明。
图 1 选择可用证书
图 1 选择可用证书
图 2 不可用证书的状态
图 2 不可用证书的状态
注册界面的另一个关键改进是对过期证书的处理。新界面为最终用户明确提供了有关哪些证书何时过期的信息，并使用户可以轻松续订证书，或忽略来自同一界面的警告。尽管管理员能够通过自动注册来自动刷新证书，但此警告功能对于移动用户或断开连接的用户而言仍然非常重要，因为这些用户可能很少登录公司网络，而且持有的证书可能已接近过期日期。
对于使用证书注册的开发人员而言，新的 API 对基于 ActiveX® 的旧控件（xenroll.dll 和 scrdernl.dll）提供了重大改进。新的证书注册 API 提供了定义良好的类层次结构，理解起来更加轻松，编码也更加简单。这一新的 API 取代了 Windows Vista 和 Windows Server 2008 中的 xenroll。
对 API 所做的这一更改对开发人员和 IT 专业人员都有影响，因为 Windows Vista 客户端无法使用 Windows Server 2003 中提供的基于 Web 的注册功能。这是由于这些注册网页（默认存储于 /certsrv 虚拟目录下）所使用的 xenroll 控件在 Windows Vista 中已不复存在。知识库文章“如何将证书服务 Web 注册页与 Windows Vista 结合使用”(support.microsoft.com/kb/922706) 提供了一种相应解决方案的相关信息。从 Windows Server 2003 自动注册到 Windows Vista 未受影响。
在以前版本的 Windows Server 中，对注册代理能代表哪些群体进行注册并没有什么限制。换句话说，一旦授予了用户注册代理能力，他就能够代表林中的其他任何用户进行注册。当然，这就意味着用户通过代表某位现有用户进行注册，进而使用新创建的证书假冒该用户，即可轻松升级自已的权限。为防止此类威胁，仅对具有高可信度的用户提供注册代理能力。这种方法虽然提高了安全性，但也使部署模型的灵活性降低，因为只有少量用户具有代表其他用户进行注册的能力。因此，地理位置分散的大型组织为最终用户（例如智能卡）部署证书的复杂度将会增加。
在 Windows Server 2008 中，可以将注册代理限制在更低的级别。可以针对能够代表哪些用户进行注册加以限制，也可以针对能够依照哪些模板进行注册加以限制，如图 3 所示。例如，现在，某组织可以赋予某个本地 IT 专业人员代表本分支机构内所有用户（而不是人力资源组中的用户）进行注册的能力。针对注册代理的这一精确方法使企业能在其组织内部更有效、更安全地委派注册能力。
图 3 注册代理限制
图 3 注册代理限制
管理 PKI 的最大挑战之一是管理分散在组织内各设备中的所有密钥对。即使在一个不很复杂的 PKI 环境中，任何特定用户也可能具有若干个不同的密钥对（如 EFS、无线网络身份验证和 S/MIME），并要求无论该用户从何处登录都可以使用这些密钥对。随着移动计算和终端服务的日益盛行，在网络内复制这些密钥对以便用户在任何位置登录都可以使用它们，将变得空前重要。虽然用户持有的令牌（如智能卡）有助于解决部分问题，但组织内可能仍然有用户没有卡或用户持有的证书并未存储在卡内。凭据漫游通过安全存储 Active Directory® 内部的密钥对和证书使得用户无论从何处登录都能够使用它们，从而解决了上述问题。
凭据漫游首先在 Windows Server 2003 SP1 中推出，允许证书和密钥在无需使用漫游用户配置文件的情况下在计算机之间安全漫游。在 Windows Vista 和 Windows Server 2008 中，此功能是默认包含的，并在证书服务客户端 (CSC) 服务中实现。配置选项（如哪些证书可以漫游和如何解决冲突）是通过组策略进行管理的。在 Windows Vista 和 Windows Server 2008 中，CSC 服务还可以实现存储的用户名和密码的漫游。虽然此功能默认包含在 Windows Vista 中，但应注意，Windows XP 中完全支持凭据漫游，登录到 Windows Server 2003 域控制器（带有更新部署；请参见 support.microsoft.com/kb/907247）时也完全支持凭据漫游。这就意味着您无需等待 Windows Vista 部署完成即可使用此技术。

可管理性
Windows Server 2008 中进行了大量升级，通过以高可用性方式使证书颁发机构 (CA) 服务更容易设置、监视和运行，改进了该服务的可管理性。CA 设置与角色管理器工具集成，并提供了安装 CA 服务的简单方法。为过程中的每个步骤都定义了默认设置，现在设置可以在无人参与模式下执行。最后，设置拥有了更好的诊断功能，使其更容易对可能出现的故障或问题进行故障排除。
Windows Server 2008 中大大增强了对 CA 服务的监视（在 Windows Vista 中拥有全面的证书诊断）。除了跨整个产品的更加灵活的事件记录基础结构外，现在 CA 服务自身还拥有一个内置监视控制台并与 Systems Center Operations Manager 2007（以前称为 MOM）相关联以提供企业级警报。企业 PKI 监视控制台是对 Windows Server 2003 AdminPak 中引入的其前身的改进。新的控制台包含在产品本身中，除了监视指定林中的所有 CA 外，现在还可以监视联机证书状态协议 (OCSP) URI。
Operations Manager 管理包为组织的 PKI 提供了一种被动监控功能，其中包括基于阈值的内置警报。例如，管理包可用于监视证书吊销列表 (CRL) 的刷新情况，当 CRL 达到过期日期前的特定天数或小时数时，则向 PKI 管理员发出警告。最后，还提供了许多新的性能计数器，帮助进行故障排除和监视 CA 服务本身的整体性能。这些计数器可用于捕获数据，如每秒颁发多少证书。
在 Windows Server 2008 中初次亮相的新功能：支持 CA 服务硬件级别的群集。此群集支持采用标准 Microsoft 群集服务 (MSCS) 技术并支持两节点的主动/被动配置。群集支持使您能够以高可用性方式运行颁发基础结构，可用于地理位置各异的群集部署。如果您选择应用群集支持，请注意，单是使 CA 群集化并不会导致整个 PKI 都可用。尽管群集可以帮助确保 CA 自身可用，但正常运行的 PKI 很可能包含未直接在 CA 上运行的其他组件。例如，CRL 分发点 (CDP) 和 OCSP 响应程序都必须以高可用性方式运行以确保可以执行吊销。此外，当采用硬件安全模块 (HSM)，尤其是基于网络的 HSM 时，它们都在 PKI 中显示潜在的故障点。群集是一个强大的新增功能，用于为证书颁发机构本身提供高可用性，但它不是使整个 PKI 部署可用的万能药。

吊销
长期以来，CRL 一直用于提供对证书的有效性检查。这些 CRL 包括有效期尚未过期但不再受信任的所有证书的序列号。例如，如果某个员工的证书的过期日期为 12/31/2008，但该员工在 9/1/2007 离开了该组织，则其证书的序列号将被添加到 CRL 中。然后，该 CRL 将可用于多个 CRL 分发点 (CDP)，如 HTTP 和轻型目录访问协议 (LDAP) 路径。
尽管被广泛使用，但 CRL 仍存在一些关键的不足之处。首先，CRL 由 CA 定期发布（通常每天一次或两次）。然后，客户端下载这些 CRL 并将其缓存直到下一个发布间隔。在此缓存期内，证书可能被吊销，而客户端可能不了解最新的状态。其次，在大型组织中，CRL 的大小可能会增长到非常大（有时会超过 100MB）。在大型、广为分散的网络范围内分发这些文件会非常困难甚至无法分发，在分支机构方案或其他有限带宽环境中尤为如此。
为解决这些问题，RFC 2560 中创建并定义了 OCSP。OCSP 提供了验证证书状态的实时方法。OCSP 客户端在需要检查叶证书有效性的计算机上运行。然后，该客户端软件引用 OCSP 响应程序并发送一条消息询问叶证书的有效性状态。该响应程序会检查证书的有效性，并实时向客户端做出响应。此方法避免了缓存和分发问题。
OCSP 客户端功能首次包括在了 Windows Vista 中（以前需要使用第三方软件）并可通过组策略进行配置。默认情况下，Windows 将尝试使用 OCSP，但如果响应程序不可用，将回退到标准 CRL 查询。
在 Windows Server 2008 中，提供了 OCSP 响应程序来回应这些要求。该响应程序通过角色管理器安装并可由 Operations Manager 2007 管理包监视。由于客户端和响应程序都符合 OCSP 标准，所以可以轻松地将它们集成到采用类似于基于标准的第三方组件的现有 OCSP 环境中。例如，完全支持让 Windows Vista 客户端根据第三方响应程序检查证书状态，以及让 Windows Server 2008 响应程序来响应来自第三方客户端应用程序的查询。此外，Windows OCSP 响应程序还可以应答由任何符合标准的 CA 颁发的证书的请求。不要求使用 Windows Server 2008 CA（和通常所说的基于 Windows 的 CA）。

总结
Windows Vista 和 Windows Server 2008 中的 PKI 平台包括许多增强功能和若干新增功能，这些功能可使部署和操作 PKI 更安全，成本更低。新的 CNG API 为开发人员提供了更轻松的编程环境，并支持新的加密标准。注册改进使组织可以更轻松地大量置备证书并在整个企业内实现密钥的安全漫游。同样，新的管理包和 CA 群集功能使监视 CA 的状态更加容易并可确保高可用性。最后，吊销检查中的改进使用基于标准的方法提供对证书的实时验证，而不会产生 CRL 分发的带宽成本。因此，Windows Vista 和 Windows Server 2008 使 Windows PKI 平台提升到了一个新级别。
PKI 增强功能资源
  • Windows PKI 主页
  • 在 Windows Vista 上故障排除 PKI 问题
  • 加密 API：下一代
  • 证书注册 API 如何将证书服务 Web 注册页与 Windows Vista 结合使用
  • 配置和故障排除证书服务客户端–凭据漫游

John Morello于 2000 年加盟 Microsoft。作为高级顾问，他曾经为财富 100 强企业以及联邦民用和国防客户设计多种安全解决方案。目前，他是 Windows Server 部门的高级项目经理，主要研究安全性和 Anywhere Access 技术。用户可访问 blogs.technet.com/WinCAT 查看其团队的博客。


 桌面文件: 初识 RDP
桌面文件
初识 RDP
Wes Miller

远程桌面协议 (RDP) 允许您远程访问计算机。多年来，它免除了许多系统管理操作，无疑是一项非常有用的技术。RDP 长期以来一直提供远程访问支持，而且越来越好。该协议于 1998 年在 Windows NT 4.0 Terminal Server
Edition (TSE) 中引入，自此以后，几乎在 Windows® 的每个发行版本中都有所改进。
从 Windows 2000 开始，几乎任何人都可以轻松地远程访问服务器系统，因为终端服务已作为可选的 Windows 组件引入，并且可以对其进行配置，因此您可以将系统用作实际的终端服务器或用作我们现在所说的远程桌面。Windows Server® 2003 和 Windows XP 提供本机远程桌面功能，允许您像在本地进行控制一样控制系统。现在，我每天都使用远程桌面远程访问我的家庭 PC 和服务器及使用 Media Center Extender。
Windows XP 和更高版本的 Windows 中增加了远程协助，远程协助可提供与远程桌面相似的体验，但远程协助是专门为本地用户向远程用户请求协助而设计的。随着远程访问支持的不断演变，Windows Vista® 现在允许远程用户提供远程协助（如果组策略允许）。
正如您会看到的，远程桌面将此强大的功能提升到了一个全新的级别，您会感激它提供的一切。当然，远程桌面存在一些限制，但同样具有许多优点。让我们看一看这两方面。

优点、缺点以及绝妙之处
对于 Windows XP（Media Center Edition 除外），主要限制是每次只能登录一个交互式用户。当 Windows XP 中的快速用户切换允许登录多个用户时，无论这些用户对于 PC 是本地用户还是远程用户，只有一个用户可以交互地使用鼠标或键盘。对于 Windows Server 版本（不作为终端服务器运行），可以一次连接两个远程桌面会话。要在 Windows Server 2003 中通过远程桌面连接到实际控制台会话，您需要使用可选参数 /console 启动终端服务客户端应用程序 (MSTSC.exe)。控制台会话非常重要，因为一些较早的应用程序由于设计不合理，未考虑终端服务会话，常常会仅在控制台会话（会话 0）上弹出一些对话框。图 1 显示了在一位 Windows Server 2003 上登录到控制台会话的用户。Windows XP 和 Windows Server 2003 远程桌面将强制执行授权以确保只允许一定数量的用户交互式登录。
图 1 登录到会话 0
图 1 登录到会话 0
此外，网络带宽和组策略都可能影响远程桌面体验。Windows XP 能够提供高达 24 位的分辨率以及对声音、本地打印机、磁盘和用于剪切和粘贴的剪贴板的重定向。根据远程桌面绘制屏幕的方式，从远程会话中删除图形元素（主题、背景等等）能够显著增加可用网络带宽，因而会话可以更迅速地对用户做出响应。Windows Vista 在此基础上增添了 32 位分辨率和对更多设备的重定向。
请注意，在带宽不足的情况下，某些操作（例如占用大量图形资源的操作）甚至对于最佳的远程桌面会话也是一种挑战，因此请做出相应的规划。

Windows Vista 新增功能
Windows Vista 对远程桌面进行了非常重要的更改。正如之前我提到的，32 位显示器分辨率以及字体平滑是一些最明显的变化。相关的增强功能是能够通过使用 /span 命令启动终端服务客户端，跨多个显示器运行 Windows Vista 会话。请注意，/span 仅与 Windows Vista 远程主机系统配合使用，要求各显示器具有相同的客户端分辨率，并且要求对齐显示器。这种扩展的工作原理是将远程系统（客户端）视为一个大型显示器。这意味着最大化应用程序可能导致预想不到的影响，其中包括必须由用户移动的放在不便位置的对话框。
此外，如果要进行连接的客户端是 Windows Vista 客户端，远程系统是 Windows Vista 系统，则您可以在 Windows Aero™ Glass 模式下运行远程会话的用户界面（只要本地系统支持 Aero Glass 即可，即使远程系统不支持也无妨）。这要归因于 Windows 远程桌面的重新构建，在客户端系统（如果该客户端是 Windows Vista）上执行大部分 Window 管理操作，从而在减少带宽使用的同时改善了用户体验。
Windows Vista 还提供了一个重要的安全增强功能，即网络级别身份验证 (NLA)。NLA 可以帮助您防止中间人攻击，在这样的攻击中恶意用户会欺骗您正在连接的信任服务器。NLA 还通过不启动全局 Windows 用户界面进行身份验证改善了身份验证体验，最大程度地降低了对远程系统的影响并降低了对拒绝服务攻击的敏感性。NLA 要求在客户端和远程系统上都安装 Windows Vista。图 2 显示了如何通过 RDP 6.0 客户端指定是否强制执行身份验证，是否发出警告，或者到底是否需要身份验证。请注意，如果您要连接到的远程系统运行的是早于 Windows Vista 的 Windows 版本，则要确保至少为该连接设置了警告；否则连接会失败。
图 2 高级连接首选项
图 2 高级连接首选项
改进的资源重定向（不仅仅是驱动器和打印机）是 Windows Vista 中另一个关键的 RDP 增强功能。只要远程系统上存在驱动程序并且设备支持重定向，您就可以重定向包括智能卡在内的多种新型设备。其他设备类型可由其供应商支持。
Windows Vista 还可以通过 RDP 6.0 客户端支持网关服务器。这允许用户通过 Internet 无缝连接到工作着的系统，而不需要 VPN 连接或任何第三方软件。图 3 显示了终端服务网关服务器设置。您可以认为网关服务器与 VPN 类似，不需要除 RDP 6.0 客户端软件之外的任何特殊客户端软件（不需要 VPN 设置或专有软件）。
图 3 终端服务网关服务器设置
图 3 终端服务网关服务器设置
Windows Vista 还包括新功能 RemoteApp™ 的基础结构。以下是 RemoteApp 的功能。远程桌面通常允许您连接到整个 Windows 会话。但是假设您只对运行 Microsoft® Word 或 Microsoft PowerPoint® 感兴趣。RemoteApp 提供了可以实现这一目的的功能。用于启用可靠的应用程序共享的方案也将在 Windows Server 2008 中启用。
此外，Windows Vista 中增添了对 Windows Desktop Sharing API 的新支持，允许发布共享的协作应用程序。Microsoft Terminal Server 团队在 blogs.msdn.com/ts/ archive/2007/03/23/writing-a-desktop-sharing-application.aspx 中提供的示例应用程序说明了 Windows Desktop Sharing API 的工作原理。
Windows Vista 及其以后的版本中需要记住的一个重要更改是用户通常不能访问会话 0（通常为控制台会话，在该会话中旧有应用程序会弹出对话框消息）。这将减少系统服务（该服务在会话 0 中运行，尽管是以非交互方式运行）与交互式用户之间的交互。它还允许减小由 Windows Vista 中的高度特权服务和交互式用户带来的攻击面，Windows Vista 已致力于降低权限（通过用户帐户控制和其他安全增强功能）。通常情况下，您无需关心此类问题，除非您在 Windows Vista 上运行旧版软件，并且在安装时或应用程序运行时发生行为错误。
在哪里找到远程桌面
关于远程桌面，要记住的一个关键问题是在哪里可以完全使用它。正如 Windows Server 2003 的各种版本一样，Windows XP Professional、Media Center Edition 和 Tablet PC Edition 中都包含远程桌面功能。Windows Vista 的 Business、Enterprise 和 Ultimate 版本中也都包含远程桌面功能。Windows 的 Home Edition（包括 Windows XP Home Edition 和 Windows Vista 的所有 Home Edition）都不提供远程桌面功能。

终端服务客户端
您可以在 go.microsoft.com/fwlink/?LinkId=91612 找到新的 RDP 6.0 客户端。如上所述，客户端包括连接到 RDP 6.0（Windows Vista 或 Windows Server 2008）系统所需的所有功能。
图 4 显示了 RDP 6.0 客户端。MSTSC 中的一项重大改进是能够缓存凭据（如果从 Windows Vista 连接到 Windows Vista 或 Windows Server 2008），甚至单一登录 (SSO) 也可以 通过组策略受支持。
图 4 RDP 6.0 客户端
图 4 RDP 6.0 客户端
MSTSC.exe 的 6.0 版本具有大量命令行参数，已在下面列出。让我们依次看一看每个参数。
mstsc [<connection file>] [/v:<server[:port]>]
[/console] [/f[ullscreen]] [/w:<width>] [/h:<height>]
[/public] | [/span] [/edit "connection file"] [/migrate] [/?]
/v:<server[:port]> 指定您要连接到的远程计算机以及可选端口值（默认端口值为 3389；该值在所有版本的 Windows 上都可以更改）。
/console 允许您连接到早期版本的 Windows 的控制台会话。此设置不适用于 Windows Vista 或 Windows Server 2008。
/f 以全屏模式启动远程桌面连接。
/w:<width> 指定远程桌面连接窗口的宽度。
/h:<height> 指定远程桌面窗口的高度。
/public 以公用模式运行远程桌面连接。在公用模式下，RDP 客户端不会将任何数据缓存到本地系统。例如，从会议中心的某个系统连接到企业服务器时，使用公用模式。
终端服务的更多神奇功能
您可能不熟悉其他两项使用终端服务组件表现其神奇功能的 Microsoft 技术。Windows XP 和 Windows Vista 中的快速用户切换通过允许多个用户登录到同一系统但用户上下文之间的快速切换不会强制任何用户注销来工作。Windows Media Center Edition（和 Windows Vista）是在此基础结构的基础上构建的，允许 Media Center Extender（实际是带有音频/视频呈现技术和编码解码器的瘦客户端终端）通过有线或无线连接在电视机上远程登录并呈现 Media Center 体验。在 Windows XP 中，这两个通常都是非业务相关方案，因为二者都需要系统不加入域并且已启用快速用户切换。请记住，在 Windows Vista 产品版本中为企业提供了这两者，不过这种使用情况不是企业的实际主流，因此我在此不会对其进行过于详细的介绍。

/span 使远程桌面的宽度和高度与本地虚拟桌面相匹配，如有必要，扩展到多个显示器。请注意，所有显示器都必须具有相同的高度并且并行排列。
/edit 打开指定的 .rdp 连接文件进行编辑。RDP 文件用于存储特定远程系统的连接信息。
/migrate 将使用“客户端连接管理器”创建的旧连接文件移动到新的 .rdp 连接文件。
使用终端服务 ActiveX® 控件以及使用下面介绍的 TSMMC.msc 时，还将提供 MSTSC 客户端中的许多增强功能，用于从同一控制台连接到多个系统。

Windows Server 2008 新增功能
除了 Windows Vista 中已经提到的所有功能和变化外，Windows Server 2008 还包括自己的远程桌面功能：Terminal Services Web Access 和 Terminal Services Easy Print。
TS Web Access 允许用户使用 Web 浏览器查看已经作为 RemoteApp 在远程服务器上启用的程序的列表，通过远程桌面 ActiveX 控件单击一下鼠标即可轻松启动这些程序。在某种意义上，您可以认为这是与 SoftGrid 应用程序虚拟化体验（我在上个月的有关 Microsoft 桌面优化包的专栏文章中提到过）相似的一种体验，在该体验中用户可以轻松地启动应用程序，而无需任何本地安装的软件。密切关注未来几年以了解使用 SoftGrid 与使用终端服务技术比较的情况将非常有趣。
TS Easy Print 允许将发生在远程（主机）系统上的所有打印机任务重定向到本地（客户端）系统。您可能认为打印机重定向已经实现了该目的，但是它并未实现。Easy Print 工作时，无需主机系统上具有其他任何打印机驱动程序，也无需任何用户交互性操作来安装该设备。如果存在本地打印机，则它可以像在本地一样在远程系统上工作。为了使 Easy Print 工作，远程系统必须运行 Windows Server 2008，而客户端系统和服务器系统必须都运行 Terminal Services 6.1 客户端，并且安装了 Microsoft .NET Framework 3.0 SP1。这两项功能预计在发布 Windows Server 2008 后不久推出。

使用远程桌面的技巧
正如我之前提到的，我每天都使用远程桌面，确切地说是远程桌面 Microsoft 管理控制台 (MMC)。在此，通过将远程系统添加为节点，您可以从同一用户界面快捷轻松地在多个系统之间切换。图 5 展示了 MMC 的大致体验。MMC 管理单元是 Windows Server 2003 管理工具包的一部分，其最新版本可从 go.microsoft.com/fwlink/?LinkId=91685 获得。
图 5 MMC 页
图 5 MMC 页
我无意中发现了有关剪切和粘贴的另一个有趣的技巧。跨客户端和服务器实现剪切和粘贴是 Windows XP 的新功能。为了使用此功能，客户端和服务器必须都运行 Windows XP，并且剪贴板必须重定向（请参见图 6）。当为连接启用剪贴板重定向后，Windows Vista 客户端还支持剪切和粘贴。
图 6 本地资源设置
图 6 本地资源设置
特别要注意的是，您可能需要键盘快捷方式（如 Ctrl+Alt+Delete），请不要将这些快捷方式通过缆线传输到远程系统，它们只在本地系统上起作用。要将 Ctrl+Alt+Delete 发送到远程系统，请在客户端上按 Ctrl+Alt+End。
最后，我建议您定期访问 Microsoft 终端服务团队的博客，网址为 blogs.msdn.com/ts。我是这样做的。
从个人角度来讲，我发现远程桌面和终端服务使我的生活更加轻松，如果没有它们，我的生活将难以想象。我希望此文能使您深入了解 RDP 6.0 客户端以及 Windows Vista 和 Windows Server 2008 中的一些新功能。

我非常感谢来自终端服务团队的高级项目经理领导 Nelly Porter，她对此专栏的研究提供了很多帮助。

Wes Miller是德克萨斯州奥斯汀市 Pluck 公司 (www.pluck.com) 的一位开发经理。在这之前，他在奥斯汀的 Winternals Software 公司任职，并曾在 Microsoft 担任 Windows 程序经理和产品经理。您可以通过电子邮件 technet@getwired.com 与 Wes 联系。


 领域备注: IM 访谈
领域备注
IM 访谈
Nathan G. Jensen

最近，我的公司 发布了一则在线广告招聘一名高级软件工程师（远距离工作职位），随即我们就被来自世界各地的申请者淹没了。作为一位首席开发人员，我的任务就是对如此多的候选人进行技术面试。我开始费力地审阅这个超大型列表，一个接一个地浏览那些言过其辞的简历。从我的经验可知，绝大部分申请者并不合格，这就是技术面试如此重要的原因。
当我计划对这些申请者逐个进行电话面试时，我想：“这将需要一个月的时间！”，我感到恐惧。这时，我从伟大的 IT 部门那里获得了一个主意：通过 IM 进行面试！太好了！并且它发挥了作用。
首先我通过 BCC 向所有候选人发送统一的电子邮件，说明他们需要接受全面的技术面试，并且我们之间通过 Windows Live™ Messenger 而不是电话进行交流。这封电子邮件筛掉了将近一半的申请者，大概是因为他们知道自己不能靠蒙骗通过技术面试。对于其他人，我认为 IM 聊天将起很大的作用，因为我只想得到对纯技术问题的直接回答。在面试的这个阶段，软技能和演说并不重要。
图 我打开多个 IM 窗口，就像打地鼠一样向所有窗口提出技术问题
图 我打开多个 IM 窗口，就像打地鼠一样向所有窗口提出技术问题
我的第一个发现就是该高科技形式的面试可节省时间和金钱。不需支付电话费用。当申请者要求面试时，我可以高效地同时对多名申请者进行面试。这确实是件令人满意的事情。我打开多个 IM 窗口，就像打地鼠一样向所有窗口提出技术问题。由于我已经提前输入了这些问题，所以这主要是复制和粘贴的操作。
我认真地通过 Web 筛选问题尽量避免面试者从 Internet 中找到答案。如果某些申请者给出的答案与发表的文章或官方文档相似，我很容易就会察觉。此外，Windows Live Messenger 可跟踪每个响应的时间戳，这样您就可以稍后返回并确定谁的答题时间最长。
另一点令人满意的就是，在进行多个 IM 聊天期间，我可以接听电话而不中断面试。这达到了多线程效率的顶峰！
当我认为此方式的优点淋漓尽显时，另一个优点出现了。电话技术面试最令我恼火的就是，当我提出一个很简短的问题并且希望一个简短的回答时，得到的却是一个长达五分钟的专题论述。使用 IM 就消除了此麻烦，因为申请者希望自己的 IM 回答简洁。
在每次面试结束后，我都会保存聊天记录，以便在以后的评论和判断中参考。我还可以将这些记录发送给老板，对申请者进行客观比较。最后，整个过程仅用了几个小时而不是一个星期 — 一个星期内通过电话只能对 25 个候选者安排时间和进行面试。
这个发现使我非常高兴。我们聘用了快速给出正确答案的申请者，然后他与老板又进行了一场令人满意的电话“软”面试。这种面试方式使我们在发布招聘信息短短几天之后就快速、高效地选拔出了合适的候选人。

Nathan G. Jensen现居住在盐湖城，是一位首席 Web 开发人员，同时也是一位自由撰稿人。您可通过访问 builderdash.com 与他联系。


 Windows 机密: Windows 资源管理器不管理文本
Windows 机密
Windows 资源管理器不管理文本
Raymond Chen

以前 有 Send To X PowerToy 工具。它可使您完成一些整理工作，如选择一组文件、右键单击然后选择“Send To Clipboard as Names”。正如所料，该过程将所选文件的名称复制到剪贴板上。
这无疑是一个很有用的 PowerToy，但是它为什么必须首先存在呢？我为什么不能在 Windows® 资源管理器中复制文件然后将其以文本形式进行粘贴来获取文件名称呢？或者不如这样说，为什么我不能简单地将文件从 Windows 资源管理器中拖出，然后将其拖放到记事本来获取文件名称呢？
我们尝试过，但未能成功。
无论是通过剪贴板还是拖放操作，数据传输都是以通过 IDataObject 接口显示的 OLE 数据对象为媒介。一种数据对象提供了多种格式。在 Windows 之初，一些剪贴板格式（包含文本和位图）已经得到解决。随着时间的推移，其他格式也添加进来。当 Windows 首次引入文件拖放功能时，该功能的形式为 HDROP。例如，您可将此功能传递到某些函数（如 DragQueryFile）以获取文件名称。将一些内容从 Windows 资源管理器复制到剪贴板时，结果数据对象将提供上面提到的 HDROP、文件内容、一个文件组描述符以及其他内容。但是您不会注意到的数据对象提供的一种格式就是文本。
放置目标（即可在其上放置对象的目标位置）在得知正将一个数据对象拖放到其上时，将询问该数据对象“您要获取哪种格式？”。该数据对象在响应时，会按优先级降序列举其支持的所有格式。也就是说，数据对象返回的第一种格式就是描述该对象的最佳格式。然后是次最佳格式，依此类推，最后一种格式为描述原始对象的最差格式。例如，代表正在从 Windows 资源管理器窗口拖出的某些对象的数据对象可能先提供一个 shell ID 列表，因为此列表近乎完美地表示了 Windows 资源管理器窗口的内容。此列表中接下来的各项可能依次为一个文件组描述符、文件内容和 HDROP。
回溯至 1998，shell 团队尝试将纯文本添加到所提供格式的列表末尾。其实际意思是：“如果实在没有合适的格式，至少可以从我这里获取一些文本（即文件列表）。”遗憾的是，文本格式失去了大量程序的魅力而用户还在高呼：“哦，我喜欢文本。”这些程序直接转化为仅包含文件列表的文本格式。结果，您将一个文件从 Windows 资源管理器拖放到一个文档中时，此程序仅在该文档中插入文件名称而不是文件本身。
天哪。
由于应用程序兼容性的负面反馈强烈，此更改被迫取消了。结果，当您拖放或粘贴从 Windows 资源管理器复制过来的文件时，shell 数据对象不提供文本形式的文件名称。
然而，Windows Vista® 通过为您提供以文本形式复制路径的方法更正了这个古老的错误：右键单击时按住 Shift 键可获取扩展的上下文菜单。这将出现新的“复制为路径”选项。无需 PowerToy。

Raymond Chen的网站“The Old New Thing”和同名书籍 (Addison-Wesley, 2007) 讨论了 Windows 历史和 Win32 编程。他将实施机制的工作留给了其他人。