 TechNet Magazine May 2007

TechNet Magazine May 2007

通信: 了解 Exchange 2007 中新增的移动消息功能

移动消息改变了人们的工作方式，这一变化促使人们更加关注移动设备的安全性。本期概述 Exchange Server 2007 如何改善用户体验并帮助您管理移动性日益增强的工作团队。

Yee-Chen Tjie 通信: Exchange Server 2007 有助于您更好地遵守法规

保护公司资产和确保遵守法规的需要给 IT 部门带来了沉重负担。了解 Exchange Server 2007 的新增功能如何帮助您保护数据和遵守法规。

Alan Maddison 身份标识管理: 构建单步设置工作流

您是否在寻找基于 Web 的设置系统？了解如何使用 MIISWorkflow 构建基于 Microsoft Identity Lifecycle Manager 2007 的自动化单步用户设置系统。

Aung Oo Windows 管理: 使用 Windows PowerShell 简化组策略管理

Windows PowerShell 旨在使您的工作更加便捷。让我们了解如何从 Windows PowerShell 中直接使用针对 Windows Scripting Host 各种语言编写的 GPMC API，以便极大地简化组策略的管理方式。

Thorbjörn Sjövold Windows 管理: 终端服务部署指南

集中运行贵组织的应用程序有许多优点，而且入门非常容易。为了在 Windows Server 2003 上启用终端服务以及在贵组织中实施终端服务，您需要了解以下内容。

James D. Silliman 编辑的话: 安全趋势

Joshua Trupin 读者来信: 有问必答

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

Greg Steen SQL 问题解答: 最佳实践分析工具、多核处理器和更多内容

Edited by Nancy Michell 实用工具特别推荐: SharePoint 网站和模板的升级工具包

Luis Câmara Manoel and Peter Skjøtt Larsen IT 业务: 制定业务计划

Stephen Ibaraki 网络专家: Windows 中的 EAPHost

Joseph Davies Windows Powershell: WMI 连接

Don Jones 您好，脚本专家！: 百花齐放，百鸟争鸣，春天来了！

The Microsoft Scripting Guys Exchange Queue & A: OWA 超时、Cmdlet 疑难解答和更多内容

KC Lemson and Nino Bilic 安全观察: 网络访问保护

John Morello 桌面文件: 再探 Windows 部署服务

Wes Miller 工作笔记: 保持敏锐

Joshua Hoffman Windows 机密: 确定常用程序

Raymond Chen


 通信: 了解 Exchange 2007 中新增的移动消息功能
通信 Yee-Chen Tjie

了解 Exchange 2007 中新增的移动消息功能
概览:
  • 移动设备配置
  • 策略强制
  • 高级消息
  • 移动文件访问

仅仅在几年之前，从桌面计算机之外的终端访问公司电子邮件还是一项非同寻常的复杂任务。而今天，人们不仅希望远程访问电子邮件，
而且通过移动消息设备看见当地咖啡店里的人也不难实现。移动消息改变了人们的工作方式。它使移动员工在离开办公室后仍然能够更高效地完成工作。
由于移动消息技术的最新进展，移动设备的安全性逐渐成为人们关注的问题。各家公司都在寻找更好的方法来保护移动设备上驻留的敏感业务数据。
Exchange Server 2003 和一项称为 Exchange ActiveSync® 的技术的出现使得 Windows Mobile® 设备（Pocket PC Phone 或 Smartphone）可以通过使用 HTTPS 安全连接到 Exchange Server 2003。但是，仍然缺少对移动设备的管理。随着 Exchange Server 2003 Service Pack 2 (SP2) 和带有邮件和安全功能包 (MSFP) 的 Windows Mobile 5.0 的发布，您可以设置一个全局策略来影响连接到 Exchange 的所有 Windows Mobile 设备。这些策略可以强制输入特定长度的 PIN、规定要求输入 PIN 之前的非活动超时以及在尝试输入 PIN 失败达到特定次数之后进行设备擦除。
Exchange Server 2003 SP2 还添加了使用 Exchange 移动管理工具进行远程擦除的功能，如图 1 所示。此工具使管理员可以针对丢失的 Windows Mobile 设备发出擦除命令。当设备再次连接到 Exchange 时，会执行硬重置，擦除设备内存中的所有内容。
图 1 用于擦除设备的 Exchange 移动管理工具
图 1 用于擦除设备的 Exchange 移动管理工具
尽管这是移动设备管理和安全性方面一个好的开端，但还有很多安全性要求需要解决。Exchange Server 2007 正好可以解决这些问题。

设备配置和强制
默认情况下，系统为 Exchange Server 2007 的所有邮箱用户启用 Exchange ActiveSync。如果希望仅为一小组用户启用此功能，可以在开始的时候为所有用户禁用此功能。Exchange 管理控制台不允许您为某组用户禁用 ActiveSync，但通过使用如下所示的 Exchange 命令行管理程序命令可以轻松做到这一点：
Get-mailbox –server <servername> | Set-CASMailbox –ActiveSyncEnabled $false
此命令将检索 Exchange 2007 服务器上的所有邮箱，并将信息传输到 Set-CASMailbox 命令，以禁用所有现有邮箱的 ActiveSync。
下一步涉及到为贵组织构建 Exchange Mailbox ActiveSync 策略的问题。构造的策略数量将取决于您的用户的各种安全配置文件。例如，通过电子邮件接收敏感金融信息的金融分析人员可能需要比普通用户更为严格的安全设备策略。
若要配置 ActiveSync 策略，请转到“Exchange Management Console”（Exchange 管理控制台）导航树，并选择“Organizational Configuration”（组织配置）容器下面的“Client Access”（客户端访问）。在“Actions”（操作）窗格中，选择“New Exchange ActiveSync Mailbox Policy”（新建 Exchange ActiveSync 邮箱策略）。
在“New Exchange ActiveSync Mailbox Policy”（新建 Exchange ActiveSync 邮箱策略）对话框中，可以为设置创建灵活的策略，通过这些设置来控制是允许将附件下载到某个设备，还是允许不可设置的设备（参见图 2）。可设置的设备是 Windows Mobile 设备，这些设备可以应用和强制指定的策略。不可设置的设备是只能应用部分策略（或完全不能应用策略）的设备。
图 2 Exchange Server 2007 ActiveSync 邮箱策略
图 2 Exchange Server 2007 ActiveSync 邮箱策略
其他功能还包括对加密和密码恢复的设置进行配置。如果启用了“Require encryption on the device”（要求对设备加密）选项，则设备存储卡上的所有文件都将被加密。“Enable password”（启用密码恢复）选项使用户可以通过 Outlook® Web Access 2007 检索设备 PIN。
在为设备应用密码策略之前需要考虑清楚。长而复杂的 PIN 可以提高安全性，但也可能使设备使用不太方便。权衡安全性和使用性的关键是确定密码强度和需要 PIN 之前的超时期限。启用“Password expiration”（密码过期）和“Enforce password history”（强制密码历史）选项也可以增加安全性，但是如果跟踪密码和 PIN 变得十分复杂，则可能会让用户感到失望。
Exchange Server 2007 ActiveSync 邮箱策略有助于增强设备安全性，但是它的某些功能需要使用 Windows Mobile 6.0（仅在我们即将推出的设备上可用）。图 2 显示的功能中，要求对设备加密、强制密码历史和密码过期（天数）都需要新版本。但是，您仍可以针对使用安装了 Windows Mobile 5.0 的设备的用户，利用 Exchange Server 2007 新的灵活策略。
对策略进行定义之后，即可将其应用于用户。在“Exchange Management Console”（Exchange 管理控制台）中，转到“Recipient Configuration”（收件人配置）并选择“Mailbox”（邮箱）。选择要为其启用 ActiveSync 策略的邮箱用户，并从“Actions ”（操作）窗格中选择“Properties”（属性）。转到“Mailbox Features”（邮箱功能）选项卡，并双击“Exchange ActiveSync”。在“Exchange ActiveSync Properties”（Exchange ActiveSync 属性）框中，单击“Browse”（浏览）按钮，并选择要应用于用户的 ActiveSync 策略（参见图 3）。重复相同的步骤可以将不同策略应用于用户，也可以使用以下 Exchange 命令行管理程序命令将某个策略应用于一组用户：
图 3 应用 ActiveSync 邮箱策略
图 3 应用 ActiveSync 邮箱策略
Set-CASMailbox –Activesyncmailpolicy
最后一步是培训您的最终用户和技术支持人员。请告知您的最终用户，在他们将设备连接到 Exchange Server 2007 时需要输入特定长度的 PIN（参见图 4）。为最终用户讲解应用的安全策略，让他们了解这些更改不会影响其日常工作。
图 4 ActiveSync 邮箱策略需要 PIN
图 4 ActiveSync 邮箱策略需要 PIN
您还应该让最终用户注意到 Exchange Server 2007 中的一种新功能，即，使用 Outlook Web Access 2007 进行自助式远程擦除。如果某个用户丢失了设备，他可以通过 Outlook Web Access 中的“Options”（选项）链接启动设备擦除，而无需与技术支持人员联系（参见图 5）。如果在正常工作时间之外丢失了设备，这一功能将非常有用。
图 5 通过 Outlook Web Access 管理设备
图 5 通过 Outlook Web Access 管理设备
最后，向您的技术支持人员介绍如何对设备进行远程擦除。操作非常简单：打开“Exchange Management Console”（Exchange 管理控制台），导航到“Recipient Configuration”（收件人配置）并选择“Mailbox”（邮箱）。接下来，选择要启动擦除其设备的用户，并从“Actions”（操作）窗格中选择“Manage Mobile Device”（管理移动设备）。“Manage Mobile Device”（管理移动设备）界面如图 6 所示。请注意，一个用户连接到 Exchange 2007 的 Windows Mobile 设备可能不止一个，因此在启动擦除的时候不要误选。
图 6 远程擦除用户设备
图 6 远程擦除用户设备

电子邮件处理和搜索
Windows Mobile 6.0 允许您以 HTML 格式读取电子邮件、设置外出通知（参见图 7）以及标记电子邮件。在 Windows Mobile 6.0 设备上标记电子邮件与在 Outlook 中标记电子邮件的效果相同。现在您可以标记电子邮件并使用 Outlook 的高级功能在返回办公室时进行后续处理，而无需将电子邮件标记为“未读”。以 HTML 格式读取电子邮件的功能为移动设备用户和其他电子邮件线程收件人提供了便利。在使用 Windows Mobile 6.0 答复电子邮件时，电子邮件不会转换为基本文本格式，这样也改善了使用 Outlook 的其他电子邮件收件人的使用体验。
图 7 外出消息
图 7 外出消息
Windows Mobile 6.0 的日历功能有极大增强。现在您可以在一个日历条目中转发、答复或全部答复邮件，并可以查看所有邀请的接受状态。
Windows Mobile 6.0 与 Exchange Server 2007 一起使用，可以提供与搜索和移动文档访问有关的两个新功能。使用移动设备的难题之一是存储容量有限。因此，很多用户的设备上只保留一至三天的电子邮件。通常用户只能从其“Inbox”（收件箱）中的一个文件夹中选择获取电子邮件。因此在需要访问旧邮件或者访问存储在邮箱中不同文件夹内的多个邮件时，这些最低限制就成了问题。
使用 Windows Mobile 6.0，用户可以通过 Exchange Server 2007 搜索和索引引擎对其整个邮箱进行无线搜索。可以根据关键字在多个文件夹中进行电子邮件搜索（参见图 8）。然后从搜索结果中实时提取电子邮件。
图 8 无线电子邮件搜索
图 8 无线电子邮件搜索

移动文档访问
随着文档协作软件（例如，SharePoint®）的增长，以及对传输的电子邮件的最大大小限制，最终用户发送的电子邮件附件越来越少，而更多地的是发送指向文件共享和 SharePoint 网站的链接。除非您可以通过虚拟专用网络 (VPN) 连接到公司网络，否则可能无法通过移动设备访问这些文档。对于移动办公人员而言，这可能是个障碍。
Windows Mobile 6.0 和 Exchange Server 2007 使用户可以通过 UNC 文件共享和 SharePoint 网站以只读模式访问他们的数据。Exchange Server 2007 可以为 Windows Mobile 设备代理针对这些文档的请求（参见图 9）。即使无法通过 VPN 连接到公司网络，用户也可以不受限制地访问电子邮件附带的文档；而且可以访问驻留在文件共享或 SharePoint 网站中的任何文档。
图 9 通过 UNC 链接访问文档
图 9 通过 UNC 链接访问文档
若要管理移动文档访问，请打开“Exchange Management Console”（Exchange 管理控制台），并在导航树的“Server Configuration”（服务器配置）下面选择“Client Access”（客户端访问）。然后转到“ActiveSync”选项卡，选择 Microsoft-Server-ActiveSync 对象，并单击“Action”（操作）窗格中的属性。在“Remote File Servers”（远程文件服务器）选项卡下，您可以配置 SharePoint 网站和文件服务器的主机名允许列表和阻止列表。
此后，返回到您的 Exchange ActiveSync 邮箱策略，确保已选中 Windows® 文件共享和 Windows SharePoint 服务的复选框（参见图 10）。
图 10 启用文档访问
图 10 启用文档访问
现在您可以为您的所有 Windows Mobile 设备用户提供更好的文档访问服务。

总结
在远程办公日益流行的今天，无论您身在何处，Windows Mobile 设备的强大功能都使您可以随时访问需要的信息。移动设备的管理和安全性已成为 IT 部门所关注的问题。Exchange Server 2007 与 Windows Mobile 6.0 结合使用可以轻松地创建针对 Windows Mobile 设备的策略，而 Windows Mobile 设备将有助于缓解问题并为远程办公人员提供新功能打下基础。
Windows Mobile 的资源
有关 Exchange Server 2007 部署和 Windows 移动消息的更多信息，请访问以下相关资源。
  • Exchange Server TechCenter
  • Exchange 2007 的移动访问基础
  • 管理 Exchange ActiveSync
  • Windows 移动虚拟实验室
  • Windows Mobile 6 SDK

Yee-Chen Tjie是 Microsoft 在新英格兰地区的技术专家。他专注于移动和统一通信解决方案。
© 2007 Microsoft Corporation 与 CMP Media, LLC.保留所有权利；不得对全文或部分内容进行复制.


 通信: Exchange Server 2007 有助于您更好地遵守法规
通信 Alan Maddison

Exchange Server 2007 有助于您更好地遵守法规
概览:
  • 托管文件夹
  • 传输规则
  • 邮件分类
  • 日记

分析人员估计，高达 75% 的公司文档是通过电子邮件创建和传递的。毫无疑问，您组织的大量知识产权依赖于其邮件服务器。这使得维护
邮件服务器（其中存储了公司的大量重要数据）的管理员担负了许多责任。此外，对于公司数据指定存档和保留要求的联邦和地方法规（在美国和在其他国家/地区）数量的不断增加，使此工作更为复杂和关键。
保护公司资产和确保遵守法规的需要是一个很大的负担。在设计 Exchange Server 2007 时，Microsoft 实现了许多更改和新功能，以大大改进 Exchange 的遵从性功能，同时使实际管理工作变得更容易。本文将介绍 Exchange Server 2007 中有助于您遵守法规的关键更改。

了解遵从性
深入介绍 Exchange Server 2007 之前，应该先讨论要满足的要求。通常遵从性要求包括三个主要方面：信息保留、访问控制和数据完整性。例如，在美国，SEC Rule 17A-4 指定某些证券交易所会员、经纪人和经销商的数据保留策略，并要求财务机构能够对其电子邮件进行捕获、编制索引、存档、搜索和检索。控制对数据的访问已经包含在许多项知名立法中，包括医疗保险信息交换与保密法案（HIPAA，Health Insurance Portability and Accountability Act）、Gramm-Leach-Bliley 法案（或 GLB 法案）和 California Senate Bill 1386（或 SB 1386）。HIPAA 和 GLB 法案管理个人数据的安全性和机密性，而 SB 1386 对公开披露涉及机密数据的计算机安全破坏作出规定。
此外，数据完整性要求已经包含在其他重要立法中，如 Sarbanes-Oxley (SOX)、PATRIOT 法案和 Basel II。但是，这些显眼的法规只是很少的一部分。有人估计，在全球实施的法规数超过 35,000。显然，公司非常希望能够控制与保留信息、控制数据访问和确保数据完整性关联的风险。那么，您作为管理员如何控制此风险，以及可以采取哪些措施来满足所有这些法规要求？
第一步是记录遵从性和保留策略。下一步是实施这些策略和对它们进行不断地管理。Exchange Server 2007 通过使用托管文件夹、传输规则代理、邮件分类和日记代理，可以帮助您制定这些策略。

托管文件夹
数据保留（或记录管理）是遵从性框架的重要部分。Exchange Server 2007 在允许管理员管理数据的方式上有了很大改进。在 Exchange Server 2007 中，记录管理基于以下三个原则：删除过时的邮件，保留必要的邮件，而且用户负责对自己的邮件进行分类。
大多数 Exchange 管理员熟悉可应用于邮箱的 Exchange Server 2003 邮箱管理器策略。在 Exchange Server 2007 中，托管文件夹为管理员提供了一种集中管理方法，用于创建和部署无法移动、重命名或（大多数情况下）删除的新默认或自定义文件夹。使用 SDK，还可以创建基于 Web 的自助服务应用程序，这些应用程序允许用户选择应该将哪些文件夹添加到其邮箱。
如图 1 所示，Exchange 管理控制台提供基于向导的方法来创建文件夹。（此功能也通过 Exchange 命令行管理程序的 New-ManagedFolder cmdlet 提供。）
图 1 使用 Exchange 管理控制台创建新文件夹
图 1 使用 Exchange 管理控制台创建新文件夹
这将启动图 2 所示的向导。创建文件夹的过程非常简单；只需输入文件夹的名称和说明，然后按“新建”按钮即可。完成文件夹创建后，您将收到确认信息。
图 2 使用直观的向导可以轻松创建新的托管文件夹
图 2 使用直观的向导可以轻松创建新的托管文件夹
制定数据保留策略后，需要为用户提供对其邮件进行排序和存储的简单方法，确保按照您组织的要求保留数据。假设需要将三个自定义文件夹部署到您的用户，以便他们可以标识保留期为三年、五年或七年的邮件。创建托管文件夹后，下一步是对每个文件夹应用内容设置。使用托管内容设置向导可以执行此操作。
邮件管理员对设置内容过期（按天度量）和内容实际过期后应对其采取的操作进行控制。可以从以下五项操作中进行选择：
  • 删除但允许恢复
  • 标记为保留限制已过
  • 移动到托管自定义文件夹
  • 移动到“已删除邮件”文件夹
  • 永久删除
配置这些设置时，有三个参数应该特别注意。第一个是邮件过期值；由于这是按天计算的，因此您应该考虑到闰年。公司管理层（更不必说法官）不会愿意内容被提前删除，即使仅提前了一天。第二个参数是过期开始日。除非您的法律小组另有说明，否则这通常是邮件到达邮箱的那一天。第三个参数是内容过期后所执行的操作。最佳做法是始终永久删除该项。内容设置还允许您记录邮件日志，方法是将其转发到 SMTP 地址。
通过使用托管文件夹邮箱策略将托管文件夹应用于邮箱。Exchange 管理控制台提供了另一个向导，用于创建这些策略。这些策略允许您选择多个文件夹并对其进行分组。这样，您就可以将多个文件夹链接到单个策略。
通常，在邮箱创建期间应用托管文件夹邮箱策略。或者，也可以使用 Exchange 命令行管理程序将策略应用于现有邮箱（使用 Set-Mailbox cmdlet）。比如说希望将名为 retention 的托管文件夹邮箱策略应用于别名为 USER1 的电子邮件帐户。为此，可以使用以下命令：
Set-Mailbox –Identity USER1
–ManagedFolderMailboxPolicy “retention”
托管文件夹和对应的内容设置提供了一种功能强大的管理保留和遵从性过程的机制。它不仅允许用户对相关电子邮件进行排序以及将数据存储在集中管理的文件夹中，而且允许对这些项进行日志记录，以确保在发现申请单或保留单的情况下，可以轻松地符合法院的要求。

传输规则
Exchange Server 2007 中有两个传输规则代理。但是，在遵从性方面，您实际上仅对运行在中心传输服务器上的代理感兴趣。此代理帮助您将基于策略的遵从性规则应用于通过 Exchange 组织的邮件流。（另一方面，边缘传输服务器规则代理可以帮助您保护组织，使其免受垃圾邮件和病毒的侵袭。）
管理员负责实施的一些常见法规和遵从性要求包括：
  • 限制不同组发件人和收件人之间的交互
  • 防止不适当的内容进出公司
  • 筛选机密信息
  • 跟踪或存档发送到特定用户和组和从其接收的邮件
  • 重定向入站和出站邮件以便在传递之前进行检查
  • 应用免责声明
由于此代理在 Exchange 2007 拓扑中所起的作用，为其选择了中心传输服务器。Exchange 2007 中的拓扑进行了重大更改，因此，Exchange 现在与 Active Directory® 拓扑更加紧密地集成在一起。当邮件在组织中流动时，它将在某个位置通过中心传输服务器进行处理。此中心传输服务器将向 Active Directory 查询当前传输规则配置，并将规则应用于它处理的所有邮件。
在一个中心传输服务器上配置的所有传输规则都将通过 Active Directory 服务复制到所有其他中心传输服务器。您需要注意站点和拓扑如何影响复制，还需要确定如何快速部署组织范围内的规则。
此外，还需要牢记，中心传输服务器还将维护收件人缓存以便进行收件人和通讯组列表查找。刷新间隔（默认为四小时）将影响规则应用于邮件的时间。
中心传输服务器上的传输规则评估在授权用户之间发送的所有会议请求、常规邮件、加密邮件和受权限保护的邮件。不管邮件类型、发件人和收件人如何，对匿名发送的所有电子邮件都进行评估。
每个传输规则都包含以下部分：条件、例外和操作。条件用于指示在邮件标识过程中使用的邮件属性，如邮件头、收件人或发件人。当邮件满足特定规则的所有条件后，除非邮件与已配置的例外匹配，否则将应用操作。例外是可选的。如果已配置某个例外，则该例外将阻止传输规则处理满足任何一个例外条件的任何邮件。操作是每个传输规则的必需部分，用于指定应该如何处理邮件。图 3 列出了根据在中心传输服务器上配置的传输规则可应用的可用操作。
Figure 3 中心服务器上传输规则的可用操作 (Close Figure 3)

操作 | 操作名称 | 说明
记录包含消息的事件 | LogEvent | 将事件添加到本地计算机的应用程序日志中。
为主题预加字符串 | PrependSubject | 在邮件主题字段开头预加字符串。
应用邮件分类 | ApplyClassification | 将邮件分类应用于邮件。
附加免责声明文本 | ApplyDisclaimer | 将免责声明应用于邮件。
为垃圾邮件可信度设置值 | SetScl | 设置邮件的垃圾邮件可信度 (SCL)。
设置邮件头的值 | SetHeader | 新建邮件头字段或修改现有的邮件头字段。
删除邮件头 | RemoveHeader | 从邮件中删除指定的邮件头字段。
在“收件人”字段地址中添加收件人 | AddToRecipient | 将一个或多个收件人添加到邮件的“收件人”地址列表中。原始收件人可以看到添加的地址。
将邮件复制到地址 | CopyTo | 将一个或多个收件人添加到邮件的抄送 (Cc) 字段中。原始收件人可以看到原始地址。
将邮件密件抄送到地址 | BlindCopyTo | 将一个或多个电子邮件收件人添加到电子邮件的密件抄送 (Bcc) 地址列表中。
将邮件重定向到地址 | RedirectMessage | 将邮件重定向到管理员指定的一个或多个收件人。邮件不会传递到一个或多个原始收件人，并且不会向收件人或发件人发送通知。
向发件人发送包含增强状态代码的退回邮件 | RejectMessage | 删除邮件，并向发件人发送未送达回执。收件人不会收到邮件或通知。
自动删除邮件 | DeleteMessage | 删除邮件。不向收件人或发件人发送通知。
要创建传输规则，可以使用 Exchange 管理控制台和规则传输向导，如图 4 所示。或者，可以使用 Exchange 命令行管理程序为规则创建编制脚本。
图 4 在中心传输服务器上启动规则传输向导以配置传输规则
图 4 在中心传输服务器上启动规则传输向导以配置传输规则
请注意，还可以使用 SDK 编写基于 Exchange 内的 SMTP 事件处理邮件的自定义传输代理。但是，这不是重点所在。

邮件分类
新增的邮件分类工具使用元数据说明特定邮件的预定用途或受众。在客户端上，此元数据可以由 Outlook® Web Access (OWA) 或 Outlook 2007 使用，以显示供用户阅读的分类说明。在服务器端，传输规则代理可以基于其邮件分类对邮件执行操作。
Exchange Server 2007 附带的默认邮件分类是“A/C（律师/当事人）特权”、“附件已删除”、“公司机密”和“公司内部”。但是，许多组织希望创建自己的分类。可以使用 Exchange 命令行管理程序中新增的 MessageClassification cmdlet 创建新分类。例如，如果需要限制对财务数据的访问，可以创建一个名为 Financial—Confidential 的邮件分类：
new-MessageClassification –Name finance –DisplayName “Financial—Confidential”
-RecipientDescription “This message contains confidential financial data.”
–SenderDescription “Restricts recipients of messages that contain confidential financial data”
请注意，虽然仅需要三个参数 - Name、DisplayName 和 SenderDescription，但是至少应该添加 RecipientDescription 以实现基本功能。图 5 显示了目前在 OWA 界面中列出的此新分类。
图 5 邮件分类列表包括新创建的 Financial—Confidential
图 5 邮件分类列表包括新创建的 Financial—Confidential
此命令不使用区域设置参数，因此将适用于 Exchange 组织中的所有区域设置。如果支持全局操作，则您很可能希望使自定义邮件分类特定于区域设置。
此外，应记住正确设置分类的权限。默认情况下，创建所有新邮件分类时为授权用户分配读取权限。但是，应该对邮件分类进行分段，以便用户只能访问适合于其角色的邮件分类。此外，请注意每个分类可以具有相对于其他邮件分类的优先权。此优先权指定说明的顺序，并确定哪些分类与转发邮件或回复邮件关联。
创建必要的分类后，下一步是创建使用分类的传输规则。（当然，这些邮件分类不一定与操作相关，它们可以仅用于提供信息。）如图 6 所示，将邮件分类与传输规则组合在一起时有许多选项。我已创建一个监视分类为 Financial 的邮件的传输规则。如果这样标记邮件，则传输规则代理将检查收件人。如果任一收件人不是 Financial Dept 通讯组的成员，则邮件将以自定义未送达邮件返回给发件人。
图 6 为属于 Financial 分类的邮件创建传输规则
图 6 为属于 Financial 分类的邮件创建传输规则
邮件分类还可以用于在组织中强制“信息隔离墙”。例如，有时需要限制某些个人和部门之间的通信。可以使用邮件分类达到此目的。

日记代理
在确保遵从性方面，日记可以看作是一个功能强大的（虽然有时很难使用）工具。幸运的是，Exchange Server 2007 提供了更加灵活的日记功能。它现在同时支持标准日记（在邮箱数据库级别上）和新增的高级日记（按收件人），这样就可以为单个用户和通讯组启用日记功能。这使符合请求的过程（如拘留或法院发出的保留单）变得更为简单。此外，您可以更好地控制日记将对存储和性能产生的影响。
例如，最灵活的新选项之一是支持以基于动态通讯组提供日记功能。比如说您的组织一直需要阻止某些个人的电子邮件。也许这用于内部 HR 调查或法庭案例。通过动态通讯组，管理员可以将用户添加到已记录日志的既定组以及从中删除。这种快速而简单的方法可以提供即席日记。
使用 Exchange 管理控制台和动态通讯组向导，可以选择用户容器（如图 7 所示），根据某些 Active Directory 属性的值筛选所含邮箱。通过选择自定义属性之一（同样如图 7 所示），管理员可以添加或删除此值来控制记录其日志的用户。
图 7 使用动态通讯组向导配置日记规则
图 7 使用动态通讯组向导配置日记规则
有关 Exchange 2007 中日记功能的深入探讨，请参考 David Strome 在 2006 年 12 月发表的文章“Exchange 2007 中功能强大的日记”。您可以在“日记概述”中找到其他信息。

Alan Maddison 是 MTI Technology Corporation 的 Microsoft 技术实践高级顾问。他重点研究 Active Directory、Exchange Server 和虚拟化。


 身份标识管理: 构建单步设置工作流
身份标识管理 Aung Oo

构建单步设置工作流
概览:
  • 使用 MIISWorkflow
  • 实施和配置
  • 扩展 MIISWorkflow

如果您一直在寻找基于 Web 的帐户请求和审批界面，而且贵组织采用了 Microsoft Identity Lifecycle Manager 2007（ILM 2007，以前称为 Microsoft Identity Integration Server 2003），
MIISWorkflow 应用程序可以为您提供简单有效的解决方案。MIISWorkflow 是 MIIS 2003 Resource Tool Kit 2.0 的一部分，已于 2004 年 12 月投入使用。虽然它未必是每个环境的完整解决方案，但对于构建适合贵组织需求的自定义应用程序而言，却是一个好的开始。
MIISWorkflow 通过集成 Web 应用程序为 ILM 2007 提供基于审批的设置功能。这是一个单步的、工作流驱动的设置系统，可以接受用户请求并将其传送给有权对特定请求做出决定的审批者（通常是经理）。根据审批者的决定，ILM 继续使用在 ILM 中定义的业务规则在连接的目录中设置用户帐户。
此应用程序只能用于单步工作流，不能创建复杂的工作流功能，例如使用平行路径的多步审批过程或使用图形界面的工作流过程。如果贵组织不需要这些复杂的工作流功能，您可以使用由 MIIS Resource Tool Kit 提供的 MIISWorkflow 示例来实施解决方案。
我将着重介绍一家虚构公司的人力资源部门的解决方案。通常，HR 系统是组织内所有员工信息的正式信息源。但是，这些系统通常具有正式员工的详细数据，但往往缺少临时员工（比如，合同工和学生实习生）的信息。HR 系统中包含的数据可能不会跟踪用户可以访问哪些系统（包括用户帐户信息）。我会介绍如何为组织内的临时员工建立简单的跟踪系统。

基于 MIISWorkflow 进行构建
以创建与现有 HR 系统协同使用的应用程序为例，了解组织可以如何利用 MIISWorkflow。在雇佣新员工时，会将用户信息添加到 HR 系统中。您可以设计执行以下操作的 ILM 流：将信息发送到 MIISWorkflow 数据库，然后在 ILM 在连接的目录中设置帐户之前，利用工作流应用程序将用户信息传送给审批者。
如果贵组织不使用 HR 系统来跟踪临时员工，则可以将 MIISWorkflow 应用程序用作正式数据源，来管理企业目录中临时员工的帐户。由于该工作流应用程序减少了获得批准所需的基于纸张的管理工作，用户不必等待数日就可以访问目录和应用程序中的帐户。还可以使用 MIISWorkflow 来快速吊销访问权限，从而增强了组织的安全性。
MIISWorkflow 也可用作审核工具来跟踪用户可以访问的系统数量、每个帐户的请求和终止日期以及每个帐户的请求者和审批者。生成具有详细帐户历史记录的报告的功能有助于组织遵守各种法规，如萨班斯 — 奥克斯利法案 (Sarbanes-Oxley) 和 HIPAA 法案。
MIISWorkflow 应用程序在 IIS 上运行，并使用 ILM 2007 的目录集成和设置功能在连接的目录中设置和取消设置帐户。该工作流应用程序的组件包括一个 ASP.NET 网页集合、一个 SQL Server™ 数据库、一个管理代理和一个授权策略存储（参见图 1）。该应用程序使用 SQL Server 进行数据存储、使用 Active Directory® 进行身份验证、使用策略存储（带 Windows® 授权管理器，通常称为 AzMan）进行授权。
图 1 MIISWorkflow 应用程序体系结构
图 1 MIISWorkflow 应用程序体系结构
可以使用 C# 和 ASP.NET 来扩展和自定义该应用程序。MIISWorkflow 由下列五个 .aspx 页面构成：ContractorApproval、ContractorHistory、ContractorRequest、ContractorStatus 和 ContractorUpdate。使用这些页面，管理员可以请求、更新、批准和跟踪系统中每个用户帐户的状态。请注意，默认情况下，MIISWorkflow 应用程序被设置为通过使用与 IIS 集成的 Windows 身份验证来利用 Kerberos。
该工作流应用程序根据审批者的操作触发 ILM，而 ILM 使用已定义的规则设置或取消设置连接的目录中的用户帐户。在对请求采取操作之后，该应用程序立即触发 ILM，而请求不必等待下一个 ILM 同步周期就可以在连接的目录中进行设置和取消设置。
该工作流应用程序需要使用 MIISWorkflow 数据库来存储用户的帐户信息。这与 ILM 存储 Metaverse 信息的数据库是相互独立的，但在同一 SQL Server 实例上进行配置。当授权用户通过该工作流应用程序请求帐户时，信息由 MIISWorkflow 进行保存。然后，在审批者访问 ASP.NET 网页时，通过该页面呈现此信息。MIISWorkflow 还存储操作的历史记录和有关数据库中帐户的其他信息。ILM 使用该应用程序提供的 SQL Server 管理代理从 MIISWorkflow 数据库导入信息，并根据需要设置和取消设置帐户。
MIISWorkflow 使用 AzMan 进行授权，AzMan 提供基于角色的访问控制 (RBAC) 来管理允许用户根据其分配的角色在应用程序中执行的任务。（有关 RBAC 的详细信息，请参阅 go.microsoft.com/fwlink/?LinkId=85825。）在 Active Directory 中对用户进行身份验证（即可允许其进行相关访问）后，该工作流应用程序将检查在 AzMan 授权存储中定义的角色，以便对用户可以执行的操作进行授权。该应用程序有两个预定义的角色：合同工请求者和合同工审批者。具有合同工请求者角色的用户或组只能通过该应用程序提出请求，但具有合同工审批者角色的用户或组可以创建请求以及批准或拒绝请求。
MIISWorkflow 应用程序授权策略存储在一个 XML 文件中。可以将 Windows 用户和组或者应用程序组分配给定义的角色。应用程序组允许 LDAP 查询根据属性值对用户的 Active Directory 或 Active Directory 应用程序模式 (ADAM) 帐户对象执行运行时查询；例如，如果用户位于（部门 =“营销”）组中，则返回 true。

应用程序演练
应用程序管理员使用 AzMan 控制对应用程序的访问。根据在贵组织中利用应用程序的方式，您可以为所有域用户或者仅为选定的组授予合同工请求者角色。合同工审批者角色应仅授予有权批准或拒绝请求的用户和组。选定的 HR 管理员，以及系统管理员和组管理员通常具有该角色。默认情况下，MIISWorkflow 应用程序使用与 IIS 集成的 Windows 身份验证作为其身份验证方法，因此该应用程序将通过用户的 Windows 桌面登录凭据来验证用户身份 - 这意味着将不会再次提示用户输入凭据来验证应用程序。
具有合同工请求者角色的用户可以将浏览器指向应用程序中的“合同工请求”页面，并提供有关合同工的信息以便为该合同工请求帐户。图 2 显示了“合同工请求”页面。
图 2 “新合同工请求”页面
图 2 “新合同工请求”页面
具有请求者角色的人员填写相关的合同工信息并提交请求。页面上有一个批准请求的链接和一个检查状态的链接，但除非请求者也具有合同工审批者角色，否则他们无法访问审批者页面。请求者可以通过单击“合同工状态”链接来查看自己的请求，但无法查看其他人所提交请求的状态。
只有合同工审批者对应用程序中的“合同工审批”页面具有访问权限，并可以在查看信息后批准或拒绝请求。图 3 显示了“合同工审批”网页的界面。
图 3 “合同工审批”页面
图 3 “合同工审批”页面
合同工审批者可以查看所有请求者提交的请求。任何合同工审批者都可以批准请求，并且只需要一次批准或拒绝操作就可以进入请求的下一个阶段。在审批者采取操作后，请求会立即从“合同工审批”页面中消失。这样可以最大程度地减少多余的审批者操作。
如果要查看新请求并根据组织需求对未决的请求采取操作，审批者需要定期访问“合同工审批”页面，因为该应用程序中没有通知机制可以告知审批者是否出现新请求或请求积压情况。审批者在页面中批准或拒绝请求后，应用程序将立即触发 ILM，并且根据审批者的操作在连接的目录中设置或取消设置帐户。
图 4 “合同工状态”页面
图 4 “合同工状态”页面
可以从“合同工状态”页面中跟踪未决请求的状态和已完成请求的记录（参见图 4）。请求者可以在此页面上采取几种操作。您可以查看自己的请求，包括员工 ID、名字、姓氏、部门、状态和上次修改日期等信息。还可以编辑现有信息、查看历史记录和终止合同工的帐户。可以修改名字和姓氏以及部门信息，并重新提交这些信息进行审批。最后，您可以从“合同工历史记录”页面中查看对请求所采取的操作，以及每个操作的日期和时间（参见图 5）。
图 5 “合同工历史记录”页面
图 5 “合同工历史记录”页面
MIISWorkflow 应用程序允许请求者从“合同工状态”页面终止合同工帐户，从而可以无缝地终止帐户。请求者可以通过单击终止链接来立即禁用或删除连接的目录中的合同工帐户。从工作流应用程序中终止合同工帐户的优点是：此功能使系统管理员无须在每个目录中搜索合同工帐户并手动删除帐户。由于 MIISWorkflow 应用程序会立即触发 ILM 来取消设置已连接目录中的那些帐户，因此在删除那些帐户时不存在延迟时间。

配置应用程序
MIISWorkflow 应用程序的配置涉及设置服务帐户、设置该应用程序的数据库、配置 ILM 与该工作流应用程序一起使用、配置 IIS 以及配置策略存储。该应用程序包含预构建的脚本和配置文件，以便简化此过程。
MIISWorkflow 应用程序提供了一个 T-SQL 查询文件，使得创建 MIISWorkflow 数据库的过程更加简单。您可以通过在查询分析器中加载该查询文件并执行查询来自动创建数据库。
IIS 配置涉及创建新的 IIS 应用程序池和虚拟目录，以及设置对 ASP.NET 主机页面的身份验证和访问控制。该应用程序还提供了具有预定义角色的 XML 文件来配置授权策略存储。可以使用 AzMan MMC 将用户和组分配到现有角色和创建新角色。
最后的步骤是配置 ILM 中的管理代理，以便将 MIISWorkflow 数据库中的数据导入 ILM。可以通过以下方式完成此操作：导入 XML 文件中的管理代理配置，然后复制 SQL Server 管理代理的预构建扩展文件。该应用程序同时提供了 XML 文件和管理代理扩展文件。自述文件中包含如何配置其中每个步骤的分步说明。

扩展应用程序
MIISWorkflow 应用程序为开发与 MIIS 集成的简单工作流提供了一个起点，您可能需要进行一些自定义设置来扩展该应用程序。除了更改网页等简单的修改之外，还可以通过许多其他方式来扩展该应用程序。
您可以添加通知功能，这样审批者可以在存在未决请求时收到电子邮件。如果未对该请求采取操作，此功能还可以在指定的天数内向审批者发送提醒消息。如果默认页面无法提供您所需要的用户信息，则可以向“合同工请求”页面和“合同工更新”页面中添加字段。可以向该应用程序添加更多角色，如审核员角色，具有该角色的用户可以查看每个请求的历史记录，而非只查看该用户所提交请求的历史记录。
对于复杂的工作流功能，如多步工作流和使用图形设计器设计工作流的功能，它们超出了本应用程序的范围。但是，您可以使用 Windows Workflow Foundation 来开发具有复杂工作流功能的更强大的应用程序。
可以在 go.microsoft.com/fwlink/?LinkId=85829 上找到 MIIS Resource Tool Kit。立即下载，并开始构建您自己的身份标识工作流解决方案。

Aung Oo是 Microsoft 咨询服务 (MCS) 的身份标识管理的项目问题专家。自首次发布 Microsoft Identity Management 以来，Aung 就一直为商业和政府客户设计、开发和部署企业目录及身份标识管理解决方案。


 Windows 管理: 使用 Windows PowerShell 简化组策略管理
Windows 管理 Thorbjörn Sjövold

使用 Windows PowerShell 简化组策略管理
概览:
  • 什么是 Windows PowerShell？
  • 以前如何管理 GPO
  • 将脚本迁移到 Windows PowerShell

Microsoft 组策略技术不是在一夜间就流行起来的，这一技术在某种程度上比较难以理解，而且需要采用 Active Directory，在当时，Active Directory 服务才刚刚出现，与当时被奉为标准的 Account/Resource 域毫无相似之处，人们对此都很陌生。而时至今日，组策略
几乎成为每个组织管理 Windows® 基础结构的主要手段。我有种感觉，Windows PowerShell™ 作为 Microsoft 最新的管理技术，将完全肩负起同样的使命，成为主要的管理手段。实际上，Windows PowerShell 很可能会使身为组策略管理员的您工作起来更加轻松。
在本文中，我将为您介绍在 Windows PowerShell 中，如何直接使用为 VBScript （以及通常基于 COM 的脚本语言）之类的 Windows Scripting Host 语言编写的 Microsoft® 组策略管理控制台 (GPMC) API 在自己特有的环境中简化组策略的管理。

为组策略任务编写脚本
几年前 Microsoft 发布了 GPMC，组策略管理员突然发现有许多简便易用的功能可供自己使用。具体地说，以组策略为中心的 MMC 管理单元体现了组策略管理向前迈进了一大步，特别是相对于使用 Active Directory® 的用户和计算机而言尤其如此。不仅如此，管理员还可以借助一个全新的 API，使用基于 COM 的语言（如 VBScript）来执行组策略管理任务，例如备份和还原组策略对象 (GPO)、在域之间迁移 GPO、配置有关 GPO 和链接的安全设置以及编写报告。
但遗憾的是，GPMC 并没有提供对组策略对象内实际已配置设置进行编辑的功能。换句话说，您可以对 GPO 容器执行操作，例如，读取 GPO 版本、读取修改日期、创建全新的 GPO、从不同的域中备份和还原/导入 GPO，等等，但却不能以编程的方式添加或更改 GPO 的内容，例如添加新的重定向文件夹或新的软件安装。通常，您只能使用组策略对象编辑器手动创建 GPO 并配置所有设置，然后备份该 GPO，再将其导入测试环境中。只有当各项功能经过验证可以正常工作时，您才能将其导入实际的应用环境中。尽管缺少这一功能，但使用脚本而不是与 GPMC API 进行人工交互也为日常的策略组管理节省了大量的时间、精力，同时也避免了不少错误。

下一级别
Windows PowerShell 与 VBScript 之类的脚本语言有何不同？对于初学者而言，Windows PowerShell 是一种外壳程序，至少就目前来说，您可以将其视为一种命令行解释器。尽管 VBScript 可以从命令行运行，但 VBScript 文件却不能逐行运行。相比之下，Windows PowerShell 脚本则可以作为一系列单独命令动态地创建。此外，Windows PowerShell 还具有一些功能类似于 VBScript 中的子例程的函数，它们可在 Windows PowerShell 命令提示符下实时地进行创建。
更值得一提的是，Windows PowerShell 基于 Microsoft .NET Framework，而 VBScript 则依赖于早期的 COM 技术。这意味着，目前有大量的 .NET 代码可直接在 Windows PowerShell 内使用。
总而言之，利用 Windows PowerShell，您可以获得完全的脚本支持和交互模式，多种功能集于一身。本文提供的示例均为命令行输入内容，因此您可以一边看示例一边尝试着输入，不过，如果您将它们放入 Windows PowerShell 脚本文件运行，它们也同样能正常工作。

使用 Windows PowerShell 重新创建早期脚本
在开始采用一项新技术时，您要做的最后一件事就是抛弃以前的全部工作成果。您可以使用三种方法从 GPMC API 访问 COM 对象，或者主要是重新利用任何早期 VBScript。下面是可选的三种方法：
  • 使用 C# 或托管 C++ 等编程语言编写一个 Windows PowerShell cmdlet。
  • 使用 Windows PowerShell 访问 MSScript.ocx 中的 ScriptControl，以封装早期脚本。
  • 将 COM 调用封装在可重用的 Windows PowerShell 函数中或直接调用 COM 对象。
我将重点介绍第三种方法，但首先让我们简单了解一下所有方法。

创建 Windows PowerShell Cmdlet
Microsoft 在 Windows PowerShell 中放入了大量的 cmdlet，这些 cmdlet 允许您复制文件、将输出内容格式化、检索日期和时间等，但您也可以自己创建 cmdlet。有关整个过程的完整详细记录，请访问 msdn2.microsoft.com/ms714598.aspx。概括地讲，主要步骤如下所示：
  • 使用 .NET 编程语言（如 C#）创建一个类库 DLL。
  • 创建一个新类并从基类 cmdlet 继承。
  • 设置各种属性，以确定名称、用法、输入参数等，并添加您的代码。
由于 Windows PowerShell 基于 .NET Framework，任何作为参数返回或传递的类型（如字符串、对象等）在代码中与在 Windows PowerShell 中都是完全相同的，不需要进行任何特殊类型的转换。
这一解决方案真正强大之处在于您将拥有一种完全受自己支配的编程语言。

使用 MSScript.ocx 中的 ScriptControl 对象封装早期脚本
显然，您需要 VBScript 引擎来运行 VBScript 文件。令人不太注意的是，该引擎是 COM 对象，而且由于您可以从 Windows PowerShell 使用 COM 对象，因此可以调用 VBScript 引擎。过程如下所示：
$scriptControl = New-Object -ComObject ScriptControl
$scriptControl.Language = ‘VBScript’
$scriptControl.AddCode(
    ‘Function ShowMessage(messageToDisplay)
    MsgBox messageToDisplay
    End Function’)
$scriptControl.ExecuteStatement(‘ShowMessage
    “Hello World”’)
如果您在 Windows PowerShell 命令行界面 (CLI) 中输入此代码，则会由某参数调用并执行 VBScript 函数，从而显示一个带有文本“Hello World”的消息框。
这时有些人可能会想：“太棒了！我已经掌握了从 Windows PowerShell 使用 COM 的技巧，不用再继续读这篇文章，马上开始使用我的早期 GPMC 脚本填充 ScriptControl 对象吧。”很遗憾，事情没有那么简单。随着脚本的增大，这种方法很快就会变得非常复杂而繁琐。

封装 COM 对象
由此可见，第三种方法是最好的：将 COM 调用封装在可重用的 Windows PowerShell 函数中，这样您就能够在 GPMC API 中使用 COM 对象。下列代码将说明如何直接在 Windows PowerShell 中创建 .NET 对象。在此示例中，可以使用 FileInfo 对象获得文件的大小：
$netObject = New-Object System.IO.FileInfo(
“C:\boot.ini”) # Create an instance of FileInfo
               # representing c:\boot.ini
请注意，“#”在 Windows PowerShell 中用于表示行内注释。使用此新实例化的 FileInfo 对象，只要键入以下代码即可轻松获得 boot.ini 的大小：
$netObject.Length # Display the size in bytes of the
                  # file in the command line interface
等等，我们不是说要谈论 COM 对象和 VBScript 转换吗？没错，但请看以下命令：
$comFileSystemObject = New-Object –ComObject Scripting.FileSystemObject
您会发现，此处的语法与我之前从 .NET Framework 创建本地对象时所用的基本相同，差别只有两点：第一，我添加了 –ComObject 开关，将 Windows PowerShell 指向了 COM 环境，而不是 .NET 环境。第二，我使用的是 COM ProgID，而并非 .NET 构造函数，在本例中为 Scripting.FileSystemObject。这里的 ProgID 是您经常使用的名字。在 VBScript 中，等同的代码应为：
Set comFileSystemObject = CreateObject(
    “Scripting.FileSystemObject”)
若要使用 VBScript 获得该文件的大小，请将上面的代码行连同以下代码一起添加到一个文件中：
Set comFileObject = comFileSystemObject.GetFile(
    “C:\Boot.ini”)
WScript.Echo comFileObject.Size
然后，使用 Cscript.exe 等运行它。在 Windows PowerShell 中，您可以按如下所示获得文件大小（如果您愿意，可以从 Windows PowerShell 命令行直接输入）：
$comFileObject = $comFileSystemObject.GetFile(
    “C:\boot.ini”)
$comFileObject.Size
当然，我本可以使用管理驱动器内对象的 Windows PowerShell cmdlet 对读取文件大小的 VBScript 进行转换，但我想向您展示从 Windows PowerShell 访问 COM 是多么容易。请注意，虽然我指示 Windows PowerShell 创建的是一个 COM 对象，但实际创建的对象（此处为 $comFileSystemObject）是一个封装了该 COM 对象并公开了其接口的 .NET 对象。不过，就本文而言，这样做没有任何影响。

运行状态的 Windows PowerShell
现在，您已经知道如何从 Windows PowerShell 访问 COM，接下来，我们要专门介绍组策略。此处的示例将展示一些简短的代码段，让您对如何从 Windows PowerShell 使用 GPMC API 有一个大致的概念；您可以从本文相关的代码下载处，在线为 technetmagazine.com/code07.aspx，下载到一整套 Windows PowerShell 函数集来管理组策略。图 1 所列为下载内容中包含的各种函数。
Figure 1 下载内容中的自定义函数 (Close Figure 1)

函数名称 | 说明
BackupAllGpos | 备份域内所有的 GPO
BackupGpo | 备份单个 GPO
RestoreAllGpos | 将备份内的所有 GPO 还原到域
RestoreGpo | 还原备份内的单个 GPO
GetAllBackedUpGpos | 从给定路径检索最新版本的 GPO 备份
CopyGpo | 将一个 GPO 内的设置复制到另一 GPO
CreateGpo | 新建空的 GPO
DeleteGpo | 删除 GPO
FindDisabledGpos | 在用户和计算机均被禁用时返回所有 GPO
FindUnlinkedGpos | 返回所有无链接的 GPO
CreateReportForGpo | 为域内的单个 GPO 创建 XML 报告
CreateReportForAllGpos | 为域内的每个 GPO 创建单独的 XML 报告
GetGpoByNameOrID | 按其显示名称或 GPO ID 查找 GPO
GetBackupByNameOrId | 按其显示名称或 GPO ID 查找 GPO 备份
GetAllGposInDomain | 返回域内所有的 GPO
在阅读本节内容时，您可以随意启动 Windows PowerShell 命令行并键入命令。但是请记住，有些命令要依赖于前面的命令。也就是说，最初创建的一些对象在以后也会用到，因此，请在同一个 Windows PowerShell 会话中执行操作。如果您关闭该会话，则必须从头开始，重新键入所有命令。
好，现在就让我们先用 Windows PowerShell 创建一个新的 GPO。Microsoft 的组策略团队随 GMPC 提供了许多能够运行正常的 VBScript 示例，您可以利用它们加快工作速度。这些示例位于 %ProgramFiles%\GPMC\Scripts 目录中，您还可以在该目录下找到一个包含 GPMC API 文档的 gpmc.chm 文件。接下来让我们看看 CreateGPO.wsf 脚本，仔细研究一下它为何能够正常运行。
在脚本的开头，您会发现这么一行：
Dim GPM
Set GPM = CreateObject(“GPMgmt.GPM”)
这基本上是所有组策略管理会话或脚本的起点，因为是它实例化了 GPMgmt.GPM 类，从而使大多数 GPMC 功能都能够被访问。接下来，我们转而从 Windows PowerShell 执行这一操作：
$gpm = New-Object -ComObject GPMgmt.GPM
现在，您已获得了组策略管理的起点，接下来要了解使用它能够做些什么。通常您需要阅读相关文档来获得此类信息，但 Windows PowerShell 提供了一个非常酷的功能。如果键入以下一行，您可以得到如图 2 中所示的输出：
图 2 Get-Member 输出
图 2 Get-Member 输出
$gpm | gm
我觉得这个功能真的很棒。请注意观察，看 Get-Member (or gm) cmdlet 是如何允许您直接从命令行查看该对象所支持的属性和方法的。这当然不能等同于阅读文档，但如果您不记得参数的确切个数或确切名称等，该功能可以让您轻松使用熟悉的对象。请牢记一点，在您查看 GPMC 文档节点列表时，会发现它很象 GPM 对象，而且所有其他类均带有前缀字母 I；这是由于 COM 的内部工作方式而造成的，我们不需要过分关注这一点；这是专为 C++ 程序员编写本地 COM 代码准备的，用于表示界面和实现它的类之间的差异。另外还要注意，使用 GPMC API 时，只有一个对象需要您采用此方法来创建，那就是 GPMgmt.GPM；其他所有对象均使用该 GPM 对象开始的方法来创建。
现在，我们要继续创建新的 GPO。
图 3 说明了创建一个 GPO 是如此的简单。请注意，在这里我省去了一些代码，包括对错误的处理（例如，如果您无权创建 GPO 会出现什么情况），并且我已对域名进行硬编码，这些都是您应该了解的。
Figure 3 创建 GPO (Close Figure 3)
$gpmConstants = $gpm.GetConstants()
# This is the GPMC way to retrieve all
# constants
$gpmDomain =$gpm.GetDomain(“Mydomain.local”, “”, $gpmConstants.UseAnyDC)
# Connects to the domain where the GPO should
# be created, replace Mydomain.local with the
# name of the domain to connect to.
$gpmNewGpo = $gpmDomain.CreateGPO()
# Create the GPO
$gpmNewGpo.DisplayName = “My New Windows PowerShell GPO”
# Set the name of the GPO
现在，您已经学会如何创建 GPO，让我们打开一个现有的 GPO。您仍具有对域 $gpmDomain 的引用，因此请键入以下内容：
$gpmExistingGpo = $gpmDomain.GetGPO(
  “{31B2F340-016D-11D2-945F-00C04FB984F9}”)
# Open an existing GPO based on its GUID,
# in this case the Default Domain Policy.
$gpmExistingGpo.DisplayName
# Show the display name of the GPO, it
# should say Default Domain Policy
$gpmExistingGpo.GenerateReportToFile($gpmConstants.ReportHTML, “.\DefaultDomainPolicyReport.html”
上述代码以 HTML 的形式完整报告了 Default Domain Policy 中的各项设置，但是很明显，您可以使用任何一种方法和属性（如 ModificationTime，它说明该 GPO 最后被修改的时间）来得知该 GPO 中所有设置的更改时间。
这是非常实用的。例如，您很可能遇到过这类情况：电话疯狂地响个不停，用户纷纷来电抱怨说他们的计算机运转异常。您怀疑这是更改、添加或删除了 GPO 设置造成的，但没有线索，不知该从哪个 GPO 着手。此时，Windows PowerShell 可以救急！只要在 Windows PowerShell 命令行中输入图 4 所示的脚本，就可以获得过去 24 小时内更改的所有 GPO。
Figure 4 发现修改过的 GPO (Close Figure 4)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
# We want all GPOs so no search criteria will be specified
$gpmAllGpos = $gpmDomain.SearchGPOs($gpmSearchCriteria)
# Find all GPOs in the domain
foreach ($gpmGpo in $gpmAllGpos)
{
if ($gpmGpo.ModificationTime -ge (get-date).AddDays(-1)) {$gpmGpo.DisplayName}
# Check if the GPO has been modified less than 24 hours from now
}
请注意 –ge 运算符，它表示大于或等于。如果您习惯使用其他脚本或编程语言中的 < 和 > 运算符，可能会有些不习惯。但由于这些运算符主要用于重定向，例如，将输出重定向到文件，因此在 Windows PowerShell 中不可将其用作比较运算符。

结束语
图 5 所列为将一个 GPO 的设置复制到另一 GPO 中的完整脚本。现在，您应该能清楚了解如何将这一新技术用于组策略，如何才能重新使用任何 COM 对象或利用 COM 对象的 VBScript 代码。
Figure 5 将一个 GPO 内的设置复制到另一 GPO (Close Figure 5)
###########################################################################
# Function  : CopyGpo
# Description: Copies the settings in a GPO to another GPO
# Parameters : $sourceGpo     - The GPO name or GPO ID of the GPO to copy
#           : $sourceDomain   - The dns name, such as microsoft.com, ofthedomain where the original GPO is located
#           : $targetGpo      - The GPO name of the GPO to add
#           : $targetDomain   - The dns name, such as microsoft.com, of the domain where the copy should be put
#           : $migrationTable - The path to an optional Migration table to use when copying the GPO
# Returns   : N/A
# Dependencies: Uses GetGpoByNameOrID, found in article download
###########################################################################
function CopyGpo(
 [string] $sourceGpo=$(throw ‘$sourceGpo is required’),
 [string] $sourceDomain=$(throw ‘$sourceDomain is required’),
 [string] $targetGpo=$(throw ‘$targetGpo is required’),
 [string] $targetDomain=$(throw ‘$targetDomain is required’),
 [string] $migrationTable=$(“”),
 [switch] $copyAcl)
{

 $gpm = New-Object -ComObject GPMgmt.GPM # Create the GPMC Main object
 $gpmConstants = $gpm.GetConstants() # Load the GPMC constants
 $gpmSourceDomain = $gpm.GetDomain($sourceDomain, “”, $gpmConstants.UseAnyDC) # Connect to the domain passed
                                                                              # using any DC
 $gpmSourceGpo = GetGpoByNameOrID $sourceGpo $gpmSourceDomain
 # Handle situations where no or multiple GPOs was found
 switch ($gpmSourceGpo.Count)
 {
   {$_ -eq 0} {throw ‘No GPO named $gpoName found’; return}
   {$_ -gt 1} {throw ‘More than one GPO named $gpoName found’; return}
 }
 if ($migrationTable)
 {
   $gpmMigrationTable = $gpm.GetMigrationTable($migrationTable)
 }

 $gpmTargetDomain = $gpm.GetDomain($targetDomain, “”, $gpmConstants.UseAnyDC) # Connect to the domain passed
                                                                              # using any DC

 $copyFlags = 0
 if ($copyAcl)
 {
   $copyFlags = Constants.ProcessSecurity
 }
 $gpmResult = $gpmSourceGpo.CopyTo($copyFlags, $gpmTargetDomain, $targetGpo)
 [void] $gpmResult.OverallStatus

}
正如组策略一样，Windows PowerShell 必将成为任何 Windows 管理环境的组成部分。但面对数百万行需要进行迁移或维护的 VBScript 代码，希望此教程会对您有所帮助。
您可以使用许多资源来改进组策略管理和其他先前使用 VBScript 的领域，这些资源包括下载内容中的 Windows PowerShell 函数，另外 TechNet 网站上还提供了 VBScript 到 Windows PowerShell 的转换准则，这一极为实用的准则在您了解 VBScript 中的等同内容的情况下，可以提示您如何在 Windows PowerShell 中执行常见任务。您可以从 microsoft.com/technet/scriptcenter/topics/winpsh/convert 获得该转换准则。
此外，GPMC API 也提供完整的文档内容，您可以从组策略网站 (microsoft.com/grouppolicy) 下载相应的信息。
最后但并非最不重要的一点，如果您尚未安装 Windows PowerShell，那还在等什么呢？现在就从 microsoft.com/powershell 下载吧。祝您愉快！

Thorbjörn Sjövold是 Special Operations Software (www.specopssoft.com) 的 CTO 和创始人，该公司提供基于组策略的系统管理和安全扩展产品。您可以通过 thorbjorn.sjovold@specopssoft.com 与他联系。


 Windows 管理: 终端服务部署指南
Windows 管理 James D. Silliman

终端服务部署指南
概览:
  • 通过几个步骤即可部署终端服务
  • 在 TS 环境中优化 Office
  • 使用 TS 有效地管理用户

早在 1998 年，Microsoft 发布了 Windows NT 4.0 Terminal Server Edition（代号为“Hydra”）。Microsoft 获得授权使用 Citrix Systems 的技术，创建了它的第一个瘦客户端/
服务器产品。对于系统管理员而言，部署“Hydra”比较困难。几年时间很快过去，终端服务发生了重大变化。它完全集成到内核中，可以通过内置的安装向导轻松进行设置，不需要使用单独的 CD 或进行 Internet 下载。除了安装比较容易，在贵组织中部署终端服务还有许多好处。最直接的好处是所有应用程序都在中心服务器上运行，这样就不用担心客户端体系结构和硬件方面的问题。最终用户只需要一个远程桌面协议 (RDP) 客户端就可以连接到中心服务器。幸运的是，当前的大多数体系结构都可以使用 RDP 客户端。
在本文中，我将介绍如何在现有 Windows Server® 2003 安装中启用终端服务、如何应用终端服务组策略以及如何使用自定义安装向导来自动完成 Microsoft® Outlook® 配置文件的设置。完成操作后，您将可以使用完全部署的终端服务器为用户提供各种应用程序。

入门
在设置终端服务时，您首先需要打开内置的“配置您的服务器向导”，该向导位于 Windows Server 2003“管理工具”中。选择“终端服务器”，然后单击“下一步”直到完成该向导。安装程序会发出警告，为了初始化所做更改，它将自动重新启动计算机。重新启动之后，服务器将处于终端服务器模式。
此外，请确保您在开始操作前已获得终端服务客户端访问许可证 (CAL)，否则在成功部署后将无法进行连接。现在，将运行终端服务的框加入到 Active Directory® 域中，然后使用具有域管理员权限的帐户登录。如果不在域中，则继续操作会非常困难，因为您无法强制实施组策略。在本文中，安装终端服务的服务器名为 TS01。
接下来，从“管理工具”中启动“Active Directory 用户和计算机”，然后创建用于放置终端服务器的新组织单位 (OU)。为简单起见，我们为该 OU 指定一个非常原始的名称“终端服务器”。找到终端服务器 TS01，然后将其移动到新的终端服务器 OU 中。
接下来，从 microsoft.com/windowsserver2003/gpmc 下载并安装组策略管理控制台 (GPMC)。使用此管理实用工具，您可以设置新的组策略、为其分配权限以及编辑该策略，以便为将要进行连接的任何用户打开或关闭适用的策略设置。GPMC 是终端服务部署的一项基本工具，它具有内置的建模向导，可以立即反映出已针对用户应用了哪些策略以及尚未应用哪些策略。
从“管理工具”中启动 GPMC 控制台，定位到“组策略管理”窗口左侧的新终端服务器 OU。右键单击该 OU，选择“在此处创建并链接 GPO”（如图 1 所示），然后为它指定一个实用的名称，如“终端服务器策略 #1”。
图 1 创建并链接新 GPO
图 1 创建并链接新 GPO
您会注意到 GPMC 窗口右侧的“安全筛选”框中出现一个“经过身份验证的用户”组。默认情况下，该组将被添加到所有组策略对象 (GPO) 中。单击该组，然后单击“删除”按钮。对于在用户登录到 TS01 时应用 GPO 的 Active Directory 树，您希望在该树中设置一个终端服务组。我们将该终端服务组称为 BottleWashers。继续进行操作，使用“管理工具”中的“Active Directory 用户和计算机”将其添加到 Active Directory 结构中。您还需要将 BottleWashers 添加到 TS01 上的“远程桌面用户”组中以及所安装的任何其他终端服务器上。
现在，确保您位于“范围”选项卡上。单击“安全筛选”框中的“添加”按钮，然后将 BottleWashers 添加为组。BottleWashers 将自动获得对“终端服务器策略 #1”的“读取组策略”和“应用组策略”权限。这两个权限是默认的组策略权限，是将任何策略应用到对象所必需的权限。
接下来，将服务器 TS01 也添加到“安全筛选”框中。对于此操作，有一个额外的步骤。首先单击“添加”，然后确保在“对象类型”下选中了“计算机”选项卡中的复选框；否则，GPMC 在 Active Directory 中将找不到 TS01。最终的结果应与图 2 相似。
图 2 在“安全筛选”下添加 TS01
图 2 在“安全筛选”下添加 TS01
同样，通过将 TS01 添加到“安全筛选”框中，会自动对其应用正确的策略权限。此时，进行以下操作是一个好主意：单击右侧 GPMC 屏幕顶部的“委派”选项卡，然后找到“域管理员”（默认情况下任何新策略上都列出）。单击屏幕右下角的“高级”按钮。
现在，您会看到“组策略的安全设置”对象。确保重点关注“域管理员”，然后找到底部的“应用组策略”设置。在右侧，选中“拒绝”选项。在单击“确定”时，您会收到在每次设置“拒绝”权限时发出的标准警告消息。此步骤可防止将新 TS 策略应用于“域管理员”- 这不是希望看到的结果。
记得我建议过您准备好 Microsoft CAL 吗？您需要查看授权材料，并确定您购买了哪些终端服务 CAL。有两种类型的终端服务器 CAL：用户和设备。有关授权的详细信息，请访问 microsoft.com/windowsserver2003/howtobuy/licensing/ts2003.mspx。
基本上，每用户授权允许一个用户仅使用一个终端服务器许可证，而对于用户连接到的设备 (PC) 数量没有限制。
如果域中没有终端服务器许可证服务器，请定位到可以承担该角色的成员服务器。虽然支持将 TS01 设置为授权服务器，但最好不要这样做，因为如果要在以后向贵组织中添加更多终端服务器，则无法在基础结构中建立较高的容错能力。转到所建议的授权服务器的“控制面板”。打开“添加/删除程序”|“Windows 组件”|“终端服务器授权”，然后按照提示来启用授权服务器。完成此操作后，单击“开始”|“运行”并输入以下内容：
tscc.msc
执行此操作后，将进入“终端服务器配置\服务器设置”树。在该树中，单击“服务器设置”|“授权”，然后选择“每用户”或“每设备”。默认选择是“每设备”。如果域中已经有终端服务器授权服务器，则“终端服务器策略 #1”中存在指示承担许可证服务器角色的服务器的设置。完成此任务后，再次转到“开始”|“运行”并键入以下内容：
licmgr.exe
现在，您需要激活 CAL 以便用户可以进行连接。可以通过电话或 Web 完成此操作，非常方便。然后，用户应该能够连接到您的终端服务器，但还没有强制实施的策略，因此让我们开始设置几个重要的策略。知识库文章“如何锁定 Windows Server 2003 或 Windows 2000 终端服务器会话”中说明了一些 Microsoft 建议使用的策略。

启用策略
需要注意的要点是：在不清楚每个策略的具体作用时，请不要随便开始启用策略权限，否则可能会得到一些出乎意料的结果。更好的方法是在开始时启用几个基本策略，并在实验室环境中对其进行广泛的测试。
您希望强制实施的第一个策略可能是环回策略。若要启用该策略，请启动 GPMC，定位到“终端服务器策略 #1”，右键单击该策略，然后选择“编辑”。转到“计算机配置”|“管理模板”|“系统”|“组策略”，然后启用“用户组策略环回处理模式”设置。在启用此策略后，设置其模式值，该值可以是“替换”或“合并”。为了在终端服务中获得最佳结果，请选择“替换”。
应该启用的另一项终端服务器设置是“将管理员安全组添加到漫游用户配置文件”，该设置位于“计算机配置”\“管理模板”\“系统”\“用户配置文件”中。此设置确保您（管理员）始终对用户配置文件文件夹具有完全控制权限。需要尽早而非在较晚时候完成此设置，因为如果已在用户首次登录后创建了文件夹，则无法应用此设置（参见图 3）。
图 3 启用“添加管理员安全组值”
图 3 启用“添加管理员安全组值”
在“计算机配置”\“管理模板”\“Windows 组件”\“终端服务”中，您会找到全部策略。考虑启用以下策略：
  • 将终端服务用户限制到一个远程会话
  • 为 TS 漫游配置文件设置路径
  • TS 用户主目录
但请注意，与您想象的可能不同，将终端服务用户限制到一个远程会话不会防止用户多次登录。而在用户尝试启动第二个终端服务会话时，他只是接管第一个已登录会话。
漫游配置文件是正确进行终端服务器操作的一项基本元素。默认情况下，在用户登录到终端服务器时，即使您对用户隐藏了 C: 驱动器，也会在终端服务器的 C: 驱动器上创建一个本地配置文件。漫游配置文件的默认行为是在用户注销时，将该本地配置文件与网络共享的漫游配置文件同步。可以设置一个组策略在用户注销时清除该本地配置文件。
接下来的两个终端服务策略（上面已经提及），即“为 TS 漫游配置文件设置路径”和“TS 用户主目录”，都与漫游配置文件有关。通常，在 Active Directory 用户的“终端服务配置文件路径”框中对这些设置进行硬编码。通过组策略设置终端服务路径更加容易，应优先使用该方法。在“Active Directory 用户和计算机”的终端服务配置文件路径中，如果设置新用户或复制现有用户，则每次都必须手动添加 TS 服务器配置文件路径信息 - 这会带来很多麻烦。更好的方法是将这些路径设置为网络共享，然后使用 GPO 来配置这些路径。

文件夹重定向
现在，我们来简要了解另一个非常重要的终端服务组件，即“文件夹重定向”，该组件通过防止过长时间的登录和注销来优化 TS 的使用体验。可以重定向的文件夹包括 Application Data、Desktop、My Documents 和 Start Menu。这四个文件夹必须位于网络共享上，并且需要特定的访问控制列表 (ACL)。有关此主题的详细信息，请参阅知识库文章“如何在 Windows 2000 和 Windows Server 2003 中使用文件夹重定向功能动态地创建更安全的重定向文件夹”。
文件夹重定向功能的优势在于每次用户登录或注销时，无须复制整个用户配置文件。终端服务识别出这些文件夹驻留在网络上，基本上只提供指向这些文件夹的指针。
建议您通过漫游配置文件和文件夹重定向来利用分布式文件系统 (DFS)，以简化网络共享的维护。由于篇幅限制，本文不再介绍 DFS，您可以在 DFS 资源中心了解到有关 DFS 的详细信息。
文件夹重定向设置位于“用户配置”\“Windows 设置”\“文件夹重定向”中（参见图 4）。文件夹重定向的文件夹值非常简单。您可能希望在每个文件夹重定向设置中清除“授予用户独占权限”的复选框，否则管理员将无法访问这些文件夹。
图 4 文件夹重定向设置的位置
图 4 文件夹重定向设置的位置

安装 Microsoft Office
现在，您已经有了一些基本策略，让我们开始安装 Microsoft Office 2003 或 2007 Microsoft Office System。Microsoft Office 针对终端服务进行了优化，因此在安装过程中不需要进行很多更改。默认情况下，Office 套件的高带宽项处于关闭状态。此时，您需要下载并安装组策略管理模板文件（ADM 文件），这样您可以控制 Office 套件内的策略。
所需的 ADM 文件位于 microsoft.com/office/orkarchive/2003ddl.htm。这里您只需要下载两个文件：Office 模板文件 (ORKSP2AT.exe) 和自定义安装向导。但是，第二个文件仅在要部署 Office 2003 时才是必需的。2007 Office System 不使用此向导；您只需单击“开始”|“运行”并键入“Setup /a”，它就会自动启动。
解压缩完第一个文件 ORKSP2AT.exe 后，您会看到许多文件。office11.adm 和 outlk11.adm 文件是需要重点关注的文件（参见图 5）。
图 5 Office 模板文件
图 5 Office 模板文件
启动 Windows Explorer，并将这两个文件复制到 %systemroot%\inf。返回并再次启动 GPMC 控制台。定位到“组策略对象”下的“终端服务器配置文件 #1”，右键单击该配置文件，然后选择“编辑”。现在，转到已定义策略内的“计算机配置”\“管理模板”。右键单击“管理模板”，并选择“添加/删除模板”，如图 6 所示。
图 6 将管理模板添加到 GPO 中
图 6 将管理模板添加到 GPO 中
现在，您会发现这两个文件都可以使用。分别添加这两个文件。这些模板文件位于“用户配置”\“管理模板”\“Microsoft Office 2003”和“用户配置”\“管理模板”\“Microsoft Office Outlook 2003”中。您可以浏览这些模板设置，并根据需要来启用或禁用模板设置。
我不会在此介绍很多设置，但您可能希望删除两个设置，即“Office 助手”和“Outlook 自动存档”。请注意，默认情况下禁用了一些设置，如“Exchange 缓存模式”和“垃圾邮件筛选”，因此不必禁用这些策略。
有关详细信息，请参阅“通过终端服务禁用的 Outlook 功能”。可以轻松禁用“Office 助手”，方法是选择“用户配置”\“管理模板”\“Microsoft Office 2003”\“助手”\“组策略中的选项”。
在终端服务环境中，您不希望用户不断地收到要进行某些操作的提示。例如，Outlook 的“邮件自动存档”设置中的提示是特别分散用户注意力的一种提示。如果在组策略中忽略此设置，则会在特定的时间间隔提示用户进行自动存档。禁用此设置会完全关闭其“Outlook 首选项”菜单。当然，您可能希望自动存档，以便调整“用户配置”\“管理模板”\“Microsoft Office Outlook 2003”中\“工具”|“选项”\“自动存档”策略中的设置。
下一个确保成功部署终端服务的步骤是设置 Outlook PRF 文件，这样用户就不会收到手动配置其 Outlook 设置的提示。此任务看上去非常艰巨，但实际并非如此。这需要安装 OrkTools，以及使用自定义安装向导创建 PRF 文件，该文件通知 Outlook 安装向导如何运行。2007 Office System 中包含的机制使此过程显得比较陈旧过时，但如果希望，您仍然可以在 Office 中使用 PRF 文件。
现在，我们通过 CIW 设置 Outlook PRF 文件。您无需实际完成整个 CIW 例程，只需完成导出已修改的 PRF 文件所需的部分。该部分只有几个步骤。
首先，启动并解压缩先前下载的第二个文件（自定义安装向导）。从“开始”|“程序”|“Microsoft Office 2003 资源工具包”中启动该向导后，系统将要求您提供 Office 2003 MSI 文件的位置。放入 Office 2003 光盘，并指明 MSI 文件的名称和路径。
接下来，直接转到 CIW 的第 17 页（共 24 页），跳过 CIW 的其余部分直接创建 PRF 文件。在步骤 17 中，选择“新建配置文件”并为它命名（如 Outlook），然后单击“下一步”。您可以在显示的屏幕中选择 Exchange Server（如图 7 所示）。键入 Exchange Server 的名称，然后单击“下一步”继续。
图 7 配置 Exchange Server 连接
图 7 配置 Exchange Server 连接
将 Outlook 通讯簿添加到所创建的配置文件中是一个好主意。执行此操作后，用户可以在撰写新邮件时选择其联系人。仅这一个步骤就可以为您节省大量的手动操作。如果选择“添加”按钮，您还可以在此配置其他自定义的功能。单击“下一步”，此后需要进行的操作只是导出 PRF 文件。
此时，需要创建一个批处理文件并将其放到域控制器（而非 TS01）上的 Netlogon 共享中。该批处理文件将启动所需的任何映射，并设置 PRF 文件以便进行部署。我编写了 WMI 脚本，使您可以轻松地完成此任务。但是，请仅将这些脚本作为指导；您需要插入与您的情况相关的信息。如果希望，可以使用其他脚本处理器，如 KiXTart。
您的批处理文件 (logon.bat) 应包括以下行：
REM Logon.bat
@echo off
wscript %0\..\clean.vbs
wscript %0\..\outlook.vbs
Clean.vbs 文件将删除首先运行的注册表项，这样 Outlook 将处理 PRF 文件：
' Clean.vbs
Const HKEY_CURRENT_USER = &H80000001
sComputer = "."
Set oRegistry=GetObject("winmgmts:\\" & _
    sComputer & "\root\default:StdRegProv")
sKeyPath = "Software\Microsoft\Office\11.0\
    Outlook\Setup"
sValueName = "First-Run"
oRegistry.DeleteValue HKEY_CURRENT_USER, sKeyPath, _
    sValueName
Outlook.vbs 会将适当的 Outlook 安装密钥添加到每个终端服务器用户的注册表中。您需要在“SValue=”设置中提供自己的路径，并且不要忘记将实际的自定义 PRF 文件添加到真正的网络目录中：
sValue = \\Serv01\PRF\Outlook.prf
更改此路径，将 Outlook.prf 文件放入其中：
' Outlook.vbs
Const HKEY_CURRENT_USER = &H80000001
sComputer = "."
Set oRegistry=GetObject("winmgmts:\\" & _
  sComputer & "\root\default:StdRegProv")
sKeyPath = "Software\Microsoft\Office\11.0\Outlook\
    Setup"
oRegistry.CreateKey HKEY_CURRENT_USER, sKeyPath
sValue = "\\Serv01\PRF\Outlook.prf"
sValueName = "ImportPRF"
oRegistry.SetStringValue HKEY_CURRENT_USER, _
    sKeyPath, sValueName, sValue
部署计划中的下一项是在 TS01 上安装 Office 2003 或 2007 Microsoft Office System。前面我提到过，Microsoft Office 针对终端服务环境进行了优化。不再需要创建任何自定义转换。您可以关闭未预先选择的 Office 功能，但此操作不是必需的。相反，还可以打开功能，但这样做可能会对带宽产生负面影响。请记住，在实际运行中部署任何功能之前，要在实验室环境中测试这些启用的功能。
在安装任一版本的 Microsoft Office 之前，需要将 TS01 置于适当的用户模式。可以从以下两种模式中进行选择：安装和执行。在执行任何软件安装之前，应处于安装模式中。若要将 TS01 置于安装模式，请在命令提示符处键入以下内容：
C:>change user /install
安装完成后，通过键入以下内容使 TS01 返回执行模式：
C:>change user /execute
如果在 TS01 上运行 Setup.exe 或 Install.exe 文件，则会自动启动安装模式。所有 Microsoft 产品都具有这些启动文件。但是，一些应用程序不使用其中任一启动文件，因此使用“更改”命令是安全的方式。如果忘记处于哪种模式该怎么办？只需执行以下命令就能知道处于哪种模式：
C:>change user /query
如果已完成上述操作，则一切事项都已就绪。现在，可以转到 Windows 客户端工作站，单击“开始”|“运行”，然后键入以下命令：
mstsc
如果使用的是 Windows 2000，您可以下载 Microsoft 终端服务客户端 (Mstsc) 实用工具。
接下来，将显示“远程桌面连接”屏幕。只需键入终端服务器名称或 IP 地址即可进行连接。“选项”按钮下有许多可用的选项，如是否连接本地驱动器或打印机，或者是否更改视频分辨率。还可以将 TS01 硬编码到“选项”区域中，然后将 RDP 配置文件保存到桌面。默认情况下，RDP 配置文件名为 Default.RDP。

管理任务
如果希望在 TS01 上执行一些管理任务，最佳选择是使用以下命令，因此它可以模拟操作（您就像实际坐在控制台旁边一样）：
Mstsc /console
如果要管理许多不同的终端服务器，您可能希望使用“管理工具”中的“远程桌面”实用工具，这样就可以将所有远程终端服务器添加到一个单独的树格式中。
您应该了解的最后一个命令是 Tsadmin，通过该命令您可以查看哪些用户已连接到终端服务器，以及用户已打开哪些 Windows 进程。使用该命令，您还可以隐藏用户，这对管理员非常有用。但请注意，如果从工作站启动 TSadmin，则无法隐藏用户。您将只能查看连接。若要隐藏用户、向用户发送消息或注销用户，则必需直接登录到 TS01。

总结
现在，您应该对终端服务有了全面深入的了解，这样您就可以非常轻松地部署终端服务器了。还有许多主题需要进行进一步的探讨，包括组策略设置和 DFS，但如果记住基本内容（如在设置 GPO 时不要走极端、在将其部署到用户之前进行广泛测试），您就具有了一个良好的开端。

James D. Silliman拥有 MCSE 认证，是 DirectApps, Inc. 的高级系统工程师，他是终端服务器部署方面的专家。DirectApps 构建 .NET 解决方案并提供托管和 ASP 服务。您可以通过电子邮件 James@directapps.com 与他联系。


 编辑的话: 安全趋势
编辑的话
安全趋势
Joshua Trupin

如今的工作场所可以是 任何地方。在过去十年中，“办公室无处不在”的概念已真正得到了普及。不在办公桌旁您也可以完成工作。移动技术使您可以在路上、家里、火车上甚至是遇到红灯时在汽车里（要谨慎）高效地工作。这真是一个奇妙的世界。除非您是一位 IT 专业人士，否则就可能面临着巨大挑战：保护和管理各种移动设备。
在 20 世纪 80 年代，安全性意味着对新病毒报告做出反应，告诉人们将其软盘放进塑料袋，以防它们相互感染（我很认真，没在开玩笑。我在上一家公司就是这样做的，结果没有一台计算机被感染！）。如果某个恶意程序最终真的感染了某台计算机，则只要没有人将受感染的软盘用于其他计算机，就可以遏制它的传播。而当大家外出就餐时，IT 专业人员只需悄悄卸下每台计算机的 5.25 英寸驱动器就可以轻松地防止计算机感染。幸运的人会有 10MB 的硬盘来存储数据。
20 世纪 90 年代，检测到哪些用户的计算机正在受到感染变得越来越困难了，因为病毒开始通过 Web 传播。与之前的十年不同，费尽心思地取走别人手里的磁盘已不能保护您的计算机了。
最近，我们知道了如何保护企业、分发组策略以及设置防火墙、隔离和阻塞点。现在呢？企业本身都开始移动办公了！眼看就失控了。该怎么办呢？
在当今的 IT 环境中，保护办公室资产只是您所要面对的挑战的一部分。任何组织的安全性都取决于其最薄弱环节，而通过将移动设备和便携式计算机连接到网络使员工移动办公，则会更容易暴露弱点。我们本月的头条新闻将讨论如何保护移动设备，这样疲倦的管理员就可以在晚上放心休息了。
当然，本期专栏还有很多其他内容。例如，管理对 Exchange Server 规定的遵从性、网络访问保护、部署终端服务、Windows PowerShell、SQL Server 等，这些内容将占一整页。（从目录上看实际上是两页。）
您在企业中遇到过的最异常的安全问题是什么？请访问《TechNet 杂志》博客 (blogs.technet.com/tnmag) 并加入讨论。编辑们正在恭候您的光临！- Joshua Trupin

向以下 Microsoft 技术专家致以衷心感谢： Alex Balcanquall、Tad Brockway、Anah Cameron、Jeroen de Borst、Michael Higashi、Ryan Hurst、Paul Limont、Sherman Lovell、Michael Murgolo、Shivakumar Seetharaman、John Speare、David Strome 和 Jim Truher。

Joshua Trupin


 读者来信: 有问必答
读者来信
有问必答

创建映像
在“Windows® PE 入门”（2006 年 9 月）一文中，Wes Miller 提到了 mkimg.cmd。我的 Windows Vista™ 系统安装有 Windows 自动安装工具包 (WAIK) 和 Business Desktop Deployment Solution Accelerator (BDD) 2007，但并没有找到这一命令文件。在当前发布的版本中，我发现了 mkimg_pe2004.cmd 和 mkimg_pe2005.cmd。但它们都调用 bldini.cmd 文件，而这个文件似乎也不存在。请问，我在哪里可以找到这些文件？
—Jim A.

实际上，这篇文章是在 Windows Vista 发布之前发表的，专门针对可用于 Windows XP 和 Windows Server® 2003 的 Windows PE 版本（称为 Windows PE 1.6）。我们在 2006 年 11 月份的期刊中刊登了一篇后续文章，主要讨论 Windows PE 2.0，该版本可用于 Windows Vista。您可以在我们的网站上查找这篇文章。
您可以使用 WAIK 中的工具生成和自定义 Windows PE 2.0 映像 － 具体而言，“mkimg”命令已被“peimg”所取代。您可以在 WAIK 在线文档中找到有关生成 Windows PE 2.0 映像的逐步演练。

安全之谜
2006 年 5/6 月的杂志上刊登了题为“解析公共安全之谜”的文章，其中建议长密码要比复杂密码更为可取，您认为在需要使这些密码可供检索的最好方法是什么？长密码可能很难让人记住。还有人建议对每个要求访问权限的系统使用不同的密码，但这样做往往也会带来存储和检索方面的类似问题。
— Ian R.

就您的问题，我们询问了我们的好友兼撰稿人 Steve Riley，他很快给出了如下答复：
这是个有关大脑可检索性的观点，非常有趣（是的，大脑可检索性这个词是我编造的）。我想说的是，记住一个用作密码短语的句子要比记住复杂密码中的任意字符组合更为容易。如果您采用映射方法，可以记住大量的密码短语。例如，假设您的 Hotmail® 的密码短语为“我和我的狗收到了邮件”。因为短语与目的地（电子邮件站点）存在某种联系（收到邮件），因此很容易记住。采用映射方法，您可以将“我和我的狗去购物”用作 eBay 的密码短语，将“我和我的狗去上班”用作办公室域帐户的密码短语，甚至可以将“我和我的狗喜欢艺术品”用作您最喜欢的图片网站的密码短语。
密码短语的来源几乎无穷无尽。我知道有些人只使用 Monty Python 影片中的格言。有些人只使用五字短语，短语中每个单词的首字母都是键盘上连续的字母（“Queen willie eats rancid turnips（女皇 Willie 吃发臭的萝卜）.”—QWERT）。只需稍加创造，密码短语就能帮助您解决大多数与密码有关的问题，同时还能增强用于证明个人身份的机密信息的安全。

“解析公共安全之谜”是一篇非常好的文章。它使我的注意力完全转移到作者独特的观点上。但是，如果软件允许在独立的程序中生成和使用独特的字符集（而不是 Webdings® 中的字符集，我指的是大家从未见过的字符集），那天平岂不是要倾向复杂性了？因为谁也无法获得一套完整的、包含所有可能的独特字符，只有用户才知道生成并使用了哪些字符集。这样的话，如果我丢失了 USB 密钥，我宁愿重新创建一小行这样的字符，也不愿键入“War and Peace”（战争与和平）。
—H.D.

有趣的想法，但我们不确定您到底如何能够记住一个从未见过的独特字符。除非您是那位“原先叫王子的歌手”(The Artist Formerly Known As Prince)。

Sysprep
在“简化桌面映像创建的技巧”（2006 年 5/6 月）一文中，Shelly Bird 指出：“当您在创建 Sysprep 文件夹时，该进程首先会对具有基本硬件的旧系统生成主映像......”请问她这么说是什么意思？我目前正在研究 BDD，但仍找不到任何有关部署单个映像的建议。请问，我如何能够获得该信息？
— Jon S.

在您所提到的文章中，作者谈论的是创建一个可被捕捉为映像并重新部署到其他计算机的标准化引用配置。换句话说，就是保持您的系统环境中具有最简单的硬件（作为最低的平均水平），安装 Windows，并使用您的基本规范（要部署到整个组织内的全部所需更改）对它进行配置，同时安装所有您希望安装的应用程序，然后使用 Sysprep 工具（该工具将删除所有具体硬件信息，使映像能够重新部署到其它新硬件）为部署准备映像。
有关这一过程的最佳指导说明，请参阅 BDD 中的《计算机映像系统职能团队指南》。BDD 提供的“计算机映像系统”组成部分包括一个可下载的工具，该工具有助于您自定义和准备映像。有关详细信息，请参阅 microsoft.com/technet/desktopdeployment/bdd/standard/ComImgFea.mspx。

转换身份验证方式
我在工作时需要使用 SQL Server™ 2005。请问，如何才能将我的身份验证方式由 Windows 身份验证转换为 SQL Server 身份验证（使用 sa 登录）？
— Sara J.

SQL Server 联机丛书中的相应主题应该可以帮助您解决这一问题：msdn2.microsoft.com/ms188670.aspx。不过，我们极力建议您仍使用 Windows 身份验证，因为使用 sa 存在一些安全隐患（在没有密码的情况，尤其如此）。也正因为此原因，我们的代码示例中不再使用“sa/nopass”。

溢于言表的赞扬
我觉得每月阅读《TechNet 杂志》是一种很好的享受。我非常非常喜欢这本刊物，总是在背包和汽车中放上几本，让它随时伴我左右，无论是工作、家中还是任何其他地方。我希望可以将整套杂志放在 Tablet PC 上或 Pocket PC Phone 上。我很渴望看到可下载到 MP3 播放器的音频版杂志。一句话，这本杂志太酷了。我酷爱它，除了爱，还是爱。我向所有的同事推荐它，将它视为一本权威的参考书。
— Erasmo M.

您想要音频版本？没问题，您找对了！我们每个月都会推出《TechNet 杂志》Podcast。现在只需进入《TechNet 杂志》网站 (www.technetmagazine .com)，单击左侧的 Podcast 链接即可。我们很高兴您能收听我们的内容。

拼图海报
贵刊 2006 年 3/4 月期刊登的 Active Directory® 拼图海报以图示的方法讲解了 Active Directory 在 Windows Server 2003 中的工作原理，这是我至今所见的最好的讲解方式。我管理的项目需要将我们全球范围的组织部署到 Windows 2000 和 Active Directory 中，这类海报使我们的所有工作变得轻松得多。即便是现在，我们的企业管理员有时仍会对海报上概述得非常清楚的组件问题争论不休，因此，访问此类信息有利于他们更好地协同工作。请问，此海报可以下载吗？
— Mike C.

我们接到的希望下载该海报的请求已经数不胜数。看来很多人都有和您相同的问题。我们已经提供该海报的下载，您可以访问 go.microsoft.com/fwlink/?LinkID= 80428，但请不要尝试在信件纸上打印。它太大了。

设置 Outlook 电子邮件签名
我是我们公司的系统管理员，最近正在编写一个脚本，想规范我域内所有用户的 Outlook® 签名。过去我一直使用您专栏“设置 Outlook 电子邮件签名”（2006 年 10 月）中提供的示例代码。但现在我遇到一个小问题：当我尝试使用以下代码自定义和设置签名的字体颜色时，字体颜色无法改变，总是黑色：
objSelection.Font.Color = wdRed
我只能更改字体和字号，无法更改字体颜色。
— Edison P.

我们就此问题咨询了脚本专家（我们有一部红色专线电话，能够直接与他们联系），他们的回答是这样的：
我们认为更改字体颜色需要使用 wdColor 枚举。请尝试：
  • 在脚本中定义此常量：
wdColorRed = 255
  • 使用此代码指定颜色：
objSelection.Font.Color = wdColorRed
现在，您的问题应该得到解决了。

获取 Windows PE
我们公司签署了 Microsoft® Select 许可协议，能不能帮我查一下，我需要和谁联系，才能获得可供我们组织使用的第五代 Windows PE？另外，我们希望能够获得可从 USB 闪存驱动器引导的功能。
— Thom S.

Windows PE 可作为软件保障的一项价值提供。您可以查看价值对照表，确定您的许可计划中是否包含这项价值。如果包含，则可以使用贵组织的 Microsoft 批量许可服务帐户（您可以登录到 https://licensing.microsoft.com）下载 Windows PE。如果您需要有关访问该网站的帮助，我们建议您与贵组织的许可协调人或您的 Microsoft 许可代表联系。


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

分析 HTTP 流量
HttpWatch Professional Edition
httpwatch.com

HTTP 是一个非常有用的 7 层协议，它为浏览器与网站之间的通信提供了基础。不仅如此，随着各种 Web 服务的层出不穷，许多 Windows® 窗体应用程序都使用 HTTP 下载程序更新并秘密与开发者通信以执行验证操作。要发现应用程序间 HTTP 通信存在的问题、对性能进行优化或验证通信的安全性可能是非常困难的，但 HttpWatch Professional Edition 可以帮助您排查并解决这些 Web 到浏览器的疑难问题。
HttpWatch 可以显示 Web 请求内部的详细信息
HttpWatch 可以显示 Web 请求内部的详细信息
HttpWatch Professional 与 Internet Explorer® 6.0 和 Internet Explorer 7 结合，既可以显示在浏览器的底部，也可以作为单独的工具显示在浏览器旁边。只要单击其“记录”按钮，HttpWatch 就立即开始捕获和记录流量，显示 Web 请求内部的所有详细信息。您可以查看原始 HTTP 流、页面请求中发生的任何重定向操作、与请求相关联的查询字符串键/值对、HTTP 方法、HTTP 压缩信息以及任何 Chunked 编码信息。此外，HttpWatch 还能显示任何与请求有关的 Cookie 的详细信息，提供 Cookie 的路径、域、过期日期和值。该应用程序
作为 Internet Explorer 的插件来运行，因此您还可以看到解密的 HTTPS 请求的所有详细信息。
借助 HttpWatch，您可以深入研究与自己请求有关的网络级性能数据，它可以显示响应时间（精确到毫秒）、DNS 查找、TCP 连接、IP 地址信息、端口和浏览器收发的字节数。想对每个请求各个方面都了如指掌？每当看到单个 HTML 页面请求涉及的方面如此之多，我就会感到不可思议。幸运的是，HttpWatch 提供了一个很棒的选项，可以按内容类型、响应代码、URL、标题或指定内容字符串对显示内容进行筛选。使用这些选项，您可以提出自己查询的内容，并随即专注地研究自己感兴趣的详细信息。
产品网站推荐使用该工具作为解决客户疑难问题的一种方式。由于该应用程序可以保存请求信息，因此客户可以向您发送与有问题的请求有关的详细信息。这对故障排除非常有用。客户只需单击几下鼠标即可通过电子邮件发送专有的 HWL 文件。收到客户发送的此文件后，您可以通过安装程序包提供的独立的日志文件查看器来查看文件。而且还可以将请求数据导出为 CSV 和 XML 格式，以便在其他应用程序中使用这些数据。
HttpWatch 具有一个公开的自动化 API，使您可以记录测试期间 HTTP 层的信息，这样有助于发现性能瓶颈。HttpWatch 程序包会安装三个讲解 API 使用方法的示例 — 其中一个针对 C 语言，需要借助 Interop 库；另外两个针对 JavaScript 和 Ruby，需要借助 COM。如果您使用的是 Ruby（带 Watir ），并且是出于测试的目的，请查看产品网站上有关如何将 HttpWatch 集成到测试平台之中的教程。
价格：单用户许可证 249 美元。

书评
《Microsoft Solutions Framework Essentials》
microsoft.com/mspress

要提供成功的技术解决方案，公司需要高效的过程和清晰的通信。Michael S. V. Turner 撰写的《Microsoft Solutions Framework Essentials》（Microsoft Press，2006）一书介绍了 Microsoft® Solutions Framework (MSF) 4.0 的基础知识，并为您讲解了如何运用这些知识来设计和实施经过检验的过程和通信实践。
Turner 开篇就提出了宝贵的建议，告诉您在应用 MSF 指导原则和实践时，不要急于在当前过程和组织结构中立即使用所有功能。相反地，他建议先将 MSF 的一部分实施到您的产品或项目中，再评估所实施部分是否成功。等待评估结束并确定实施成功后，再选择适合项目的其他 MSF 部分，将其引入标准项目周期中。这样既可以使 MSF 适应您的具体环境，又可以减少因不断更改而导致的意想不到的问题。
此书适用于任何参与技术解决方案提供过程的人员，包括技术人员和非技术人员。“Building an MSF Team”一章介绍了技术人员和非技术人员应如何提供成功的解决方案。但是，本章指出这将是 MSF 中较难实施的一部分，因为其中涉及很多对日常职责的更改。
结构更改的核心理念是建立一个协调者团队，团队中各成员协同工作、各自负责不同部分并共同优化总体过程。（当然，这并不代表不需要权威的决策者。）如上所述，MSF 协调者可分为七个组：产品管理组、程序管理组、体系结构组、开发组、测试组、用户体验组和发布/运营组，其中每个组都有其各自的组成结构和职责。对于具有大型组的组织，此书提供了一些有关如何扩大协调组以支持大型团队和组的建议。
任何项目中都存在风险，但您可以获得丰富的提示来重新划分组织的结构，这些提示有助于您和您的团队极为有效地处理风险。最大程度地降低项目风险是至关重要的，为实现这一目标，需要将风险管理过程分为六个步骤：发现风险、分析并确定优先级、制定计划、跟踪和报告、更改控制方式以及学习总结以往经验。此外，您还必须在整个项目周期中持续不断地对风险进行评估。本部分中讲述的内容能够有效地帮助您降低失败的可能性。
书中还对提交解决方案的基础知识做了详细介绍，包括设定构想、计划、构建、稳定和部署解决方案所应遵循的行动路线，以及定义每个协调组在各个阶段的工作职责。书中还为您介绍了 MSF Governance Model（MSF 管理模型），它更加详细地展示了解决方案整个提交过程中的每条行动路线：构想、计划、构建、稳定、部署和最后的管理（即指导解决方案的提交过程）。
也许您会认为自己在组织中的角色并不需要本书提供的工具和过程，但阅读本书会使您对当前的过程有一个更深的了解 — 不论您是负责运营、开发还是项目的管理。即使您的工作与软件开发无关，听 Turner 细细道来那些有趣的话题，也会对您组织内部工作效率的提高和沟通渠道的改善大有裨益。
价格： 44.99 美元。

编辑文件
UltraEdit
ultraedit.com

每位认真严谨的 IT 专业人员的工具箱内都需要一个功能强大的编辑工具。而我认为 IDM Computer Solutions 开发的 UltraEdit 正是一个必不可少的工具。这款功能强大的编辑工具可支持任何优秀文本编辑器的所有标准特点和功能，包括 ASCII 字符插入、宏、使用正则表达式进行搜索和替换、外部应用程序启动、UTF 支持和大型文本文件的快速处理。但是，UltraEdit 有几个不太常用的功能，使其独树一帜。
对于基本的编辑，您可以使用的功能包含：100,000 词汇量的多语言集成拼写检查、自动完成和标准语言（如 C#）的代码语法突出显示。您可以通过硬回车在特定列设置自动换行，对于设计文本行不得超过特定长度的文本电子邮件来说，这是一项极为实用的功能。在这种情况下，您只需单击几下鼠标即可通过 UltraEdit 发送电子邮件。该应用程序与 Windows Explorer 相集成，因此只需右键单击再左键单击即可非常轻松地打开文件进行编辑。
UltraEdit 的代码语法突出显示
UltraEdit 并非只适合编辑文本文件。它还能处理二进制文件，提供对十六进制值、行引用和可能的 ASCII 值的标准十六进制编辑器视图。在十六进制编辑模式下，您不仅可以剪切、复制和粘贴值，还可以执行标准的搜索和替换操作。UltraEdit 还包含一个集成的 FTP 客户端，该客户端支持通过 FTP 和 SFTP 进行连接。此外，您可以打开标准的 Secure Shell (SSH) 或 TELNET 连接。
该应用程序还为 Web 开发人员提供了集成的 HTML 验证工具，方便他们检查网页。UltraEdit 还提供列模式，您可以在该模式下处理基于文本的数据库文件和带分隔符的日志文件；列模式的应用简化了编辑操作，使您可以轻松地在数据间进行跳转、对数据进行求和以及编辑数据。UltraEdit 甚至可以将一组文件分组到一个项目或工作组中，使您只需一次单击即可打开一批相关文件。总之，UltraEdit 包含的众多功能可以让您的 IT 生活变得更为轻松高效。
价格：单用户许可证 49.95 美元。

管理您的移动配置
Net-Switch
net-switch.com

人们经常会遇到这样一个问题。当您提着便携式计算机从一个环境到另一个环境（例如，从数据中心到 QA 环境）时，会发现总要不断为便携式计算机重新指定静态 IP 地址和默认打印机。如果您曾经遇到过类似情况，您可能需要 Net-Switch。这个操作简单的工具非常实用，它允许您设置和保存多个网络配置，其中每个配置都分配了自己的默认打印机，因此无需记住或在每次转换环境时手动键入那些数字。
Net-Switch 可以解决便携式计算机设置时常变化的困扰
此应用程序非常简单易用。您要做的只是：命名配置、选取网络适配器、分配静态 IP 及其相关掩码、网关和 DNS 服务器（或选择 DHCP）并设置默认打印机，仅此而已。这款实用工具价格便宜，能够为您免除许多麻烦。
价格：19.95 美元。

与工具箱专栏联系
如果您希望在本专栏中介绍某个自己非常喜欢的工具或实用程序，请发送电子邮件给专栏作者，地址为 tntools@microsoft.com。

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


 SQL 问题解答: 最佳实践分析工具、多核处理器和更多内容
SQL 问题解答
最佳实践分析工具、多核处理器和更多内容
编辑：Nancy Michell

问：有关涉及到限定架构的表/视图使用的最佳实践分析工具 (BPA) 规则，我有一些问题。根据 BPA 文档，此规则不检查临时表中的架构限定。BPA 报告对存储过程内创建的临时表的引用作出标记。它们是否应被限定？如果限定，那么具有何种架构？我认为临时表与其他表一样，应限于其所有者。
答：BPA 对表和视图引用的架构限定建议其实并不适用于 SQL Server™ 2005，因为用户与架构相分离的机制已解决了在早期版本的 SQL Server 上需要此实践的问题。在 SQL Server 2000 中，具有不同默认架构的不同用户需要通过架构限定才能重用查询计划。他们可以使用没有限定架构的 dbo 对象，但 SQL Server 必须首先检查这些对象的默认架构，防止重用查询计划。由于用户与架构相分离的机制允许不同用户共享一个默认架构，而且通常允许所有数据库用户都可以访问其默认架构中的对象，因此通常将具有未限定的表和视图名称的特别计划在用户中共享并进行重用。存储过程内未限定的表和视图的名称从一开始就不会遇到上述问题，这进一步削弱了此实践的理由。SQL Server 2005 中的 BPA 不包括此类规则，因为它没有 T-SQL 分析器。然而，它将检查不正确的配置和安全设置。

问：我在运行 SQL Server 2005 SP1 时遇到异常行为。如果我删除某个表中的记录并同时在同一表中执行插入操作，则在提交删除事务之前，会锁定插入。是否可以采用某种方法找到阻塞的相关内容？
答：可以。您可以运行图 1 中的动态管理视图 (DMV) 脚本来查找锁和阻塞程序。
Figure 1 查找阻塞和锁 (Close Figure 1)
-- script to show blocking and locks
SELECT
  t1.request_session_id AS spid,
  t1.resource_type AS type,
  t1.resource_database_id AS dbid,
  (case resource_type
   WHEN ‘OBJECT’ THEN object_name(t1.resource_associated_entity_id)
   WHEN ‘DATABASE’ THEN ‘ ‘
   ELSE (SELECT object_name(object_id)
      FROM sys.partitions
      WHERE hobt_id=resource_associated_entity_id)
  END) AS objname,
  t1.resource_description AS description,
  t1.request_mode AS mode,
  t1.request_status AS status,
   t2.blocking_session_id
FROM sys.dm_tran_locks AS t1 LEFT OUTER JOIN sys.dm_os_waiting_tasks AS t2
ON t1.lock_owner_address = t2.resource_address
GO

问：除了超线程和双核技术外，芯片供应商开始推出具有多核（四核、八核或更多）的处理器。我正在考虑购买具有多核处理器的新服务器以支持 SQL Server 2005 Standard Edition 的部署，我想知道在使用四核处理器时是否只能使用一个物理 CPU（因为 Standard Edition 限制为最多只能使用四个物理 CPU）？
答：对于许可和 CPU 版本支持方面，SQL Server 都只考虑物理接口/CPU 的数目，而不管处理器上核的数目。因此，举例来说，SQL Server 2005 Standard Edition 最多支持 4 个 CPU 即表示它将支持 4 个物理 CPU 接口，而不管每个接口上核的数目（如果有 4 个物理 CPU，每个 CPU 具有 4 个核，那么 Standard Edition 部署将可以使用 16 个逻辑 CPU）。而且，即使您拥有 16 个核/逻辑 CPU，也只需要为 4 个物理 CPU 购买许可，而不是所有 16 个核。有关 SQL Server 和多核的详细信息，请参阅 microsoft.com/sql/howtobuy/multicore.mspx。

问：我打算购买一些新的数据库服务器。我的组织应该选择 64 位版本还是依旧选择经过充分试验和测试的 32 位版本？
答：这要视具体情况而定。现在由于供应商将其硬件从 x86 转换到 x64，这已成为非常普遍的问题。您应该首先问一下您的数据库服务器上会有哪些内存压力。如果在整个硬件寿命（通常为三年）中，您的 SQL Server 实例占用的内存不到 3GB，则应选择 32 位 x86，假设这也是其他服务器（域控制器、DNS 服务器、应用程序服务器、Web 服务器和邮件服务器）的方向。如果 SQL Server 实例占用的内存超过 16GB 或者每个服务器（或群集）具有多个实例，则应认真考虑使用 64 位技术。如果存在八个以上的处理器，IA64 则为标准建议配置。但是，由于 x64 四核和八核 CPU 开始大量上市，因此选择 x64 可能比 IA64 更具性价比。
当迁移到 x64（或 IA64）时，在初始成本估计中可能不包括在开发、测试和性能环境中部署同一体系结构。但您还应考虑是否在硬件生命周期中受到旧技术的困扰。在 18 个月中，几乎不可能纯粹获得 x86 硬件。如果您现在选择这种解决方案，由于这是一种淘汰并更换的方案，则在今后一两年间升级的费用昂贵。现在选择 64 位硬件将在未来几年为您提供更多选择。
因此，在您打算购买新硬件时，在核心应用程序发布周期开始之际，或在您从 SQL Server 2000 升级到 SQL Server 2005 时，都是迅速转到 64 位的大好时机。

问：我在两个服务器间启用了日志传送功能。周末，主服务器上的硬件问题导致日志传送功能停止。当我返回检查日志传送功能时，我发现尽管停机几个小时，但 LS_backup_dbname 运行良好。
然而，在辅助服务器上，复制作业看上去工作正常，但还原作业似乎要跳过文件，但最后总是失败。它虽然运行，可是却要跳过每个文件，但都失败了。上次还原到现在已有 849 分钟。过去有过类似情况，我所做的只是重新启动传送配置，即，关闭该功能然后再次将其打开，这样我就停止获取新的备份并将其还原到辅助服务器，然后再重新开始日志传送功能。是否有更好的办法处理此类情况？
答：您看到的可能是丢失备份文件的结果。正如您所知道的，日志传送功能的备份、复制和还原作业是独立运行的。复制位置中的旧备份文件也会按您指定的计划进行删除。如果一段时期内还原作业没有运行，该时间段长度可能超过间隔，这将导致丢失备份文件。日志传送还原作业具有的逻辑会尝试从不同操作环境产生的不同类型错误中恢复。基本上，它在发生错误时扫描各个文件，尝试找出正确的备份文件。如果没有找到正确的备份文件，我猜想可能某种操作删除了所需的文件，也可能是您重新配置了日志传送的备份部分。
一种解决办法是，通过其他备份作业无意中创建的事务日志备份文件进行手动还原。只需将这些文件复制到日志传送复制位置，问题在于日志传送识别的命名约定。但一旦通过手动还原解决这一问题后，常规还原即可识别并继续。

问：我想知道如何使用 T-SQL 查看总物理内存和可用物理内存的大小。是否有简便的方法获取此信息？
答：只需运行图 2 中的查询，即可获取所需数据。
Figure 2 获取内存信息 (Close Figure 2)
With VASummary(Size,Reserved,Free) AS
(SELECT
  Size = VaDump.Size,
  Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
  WHEN 0 THEN 0 ELSE 1 END),
  Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
  WHEN 0 THEN 1 ELSE 0 END)
FROM
(
  SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
    AS Size,
    region_allocation_base_address AS Base
  FROM sys.dm_os_virtual_address_dump
  WHERE region_allocation_base_address <> 0x0
  GROUP BY region_allocation_base_address
  UNION
  SELECT CONVERT(VARBINARY, region_size_in_bytes),
    region_allocation_base_address
  FROM sys.dm_os_virtual_address_dump
  WHERE region_allocation_base_address = 0x0
)
AS VaDump
GROUP BY Size)

SELECT SUM(Size*Free)/1024 AS [Total avail mem, KB] ,CAST(MAX(Size) AS INT)/1024
    AS [Max free size, KB]
FROM VASummary
WHERE Free <> 0

问：为了更方便地从应用程序创建数据库，我想将 sa（系统管理员）密码存储在使用对称密钥加密的文件中。我应该怎么做？
答：首先，您应确保决不从应用程序使用 sa。此外，您应使用 Windows 身份验证而不是 SQL Server 身份验证。
如果您需要执行更高权限的活动，应执行以下操作：定义执行该操作所必需的最低权限。定义一个包含这些权限的数据库角色。将某个用户分配到该角色。创建一个具有执行这些功能的 EXECUTE AS 子句的存储过程。有关 Execute As 子句的说明，请访问 msdn2.microsoft.com/ms188354.aspx。
当然，不管涉及的帐户是否为 sa 帐户，应谨记 Windows 身份验证并不始终是一个可选的方法，更基本的问题是：您如何安全地存储 SQL Server 登录帐户的密码？通过这种方式，那些需要使用该密码的应用程序才可以访问它，但未授权用户或应用程序却不能访问。
对密码进行加密是正确的一步，但它只是将问题从保护密码转向保护加密密钥而已。
如果是基于 Microsoft® .NET Framework 的应用程序，请查阅企业程序库（网址是 msdn2.microsoft.com/aa480453.aspx）和 MSDN® 的模式与实践部分的建议（网址是 msdn.microsoft.com/practices）。企业程序库包含若干应用程序块（这将对您非常有用），其中包含配置块、加密块和数据访问块；它们不但有助于您（至少）安全地存储密码，而且还有助于您管理整个数据访问。
如果企业程序库不是一个可选的方法（可能由于您没有使用 .NET Framework），则您应熟悉 CryptoAPI，请参阅以下网址：msdn2.microsoft.com/aa380255.aspx。您可以在此了解随操作系统一起发布的核心加密功能，该功能可以帮助您将加密密钥与用户主体或计算机联系起来，这将简化密钥管理（在您对密码进行加密后，这将成为需要关注的问题）。

问：我希望将我的 SQL Server 2000 两节点群集服务器（主动/主动群集，在 64 位硬件上）从域 A 移至同一林内的域 B。SQL Server 数据库位于 SAN 中。Active Directory® 体系结构调用具有两个子域（域 A 和域 B）的空的根域。域 B 将成为放置所有基础结构组件的域。它是一个 Windows Server® 2003 Enterprise 环境，包含运行 Windows 2000 的其他域控制器。
是否可以将 SQL Server 群集服务器的域成员资格从域 A 更改为域 B？
答：对于初学者，请参阅“如何更改 SQL Server 2000 故障转移群集的域”以及“如何将 Windows 群集服务器从一个域移至另一个域”。该过程也适用于多实例群集。唯一的不同之处在于您必须根据情况为每个实例重复以上步骤。此处决不是“建议”您更改群集的域，特别是如果涉及的问题比较复杂，而且已有过多次更改的情况。另一种方法是像您所说的那样，同时重建新的实例并迁移数据。
每个项目都是不同的，它们会使用各种各样的工具来执行实际的域级更改（包括安全注意事项、帐户迁移、SID 映射等等）。这常常是该过程最困难的部分，而非实际的更改本身。

衷心感谢以下 Microsoft IT 专家，感谢他们与我们分享了技术与专业知识： Sunil Agarwal、Laurent Banon、Steve Bloom、Chad Boyd、Matt Burr、Shaun Cox、Cindy Gross、Bobby Gulati、Matt Hollingsworth、Arnost Kobylka、Mikhail Shir、Fernando Pessoa Sousa、Stephen Strong 和 Ramu Veeraraghavan。


 实用工具特别推荐: SharePoint 网站和模板的升级工具包
实用工具特别推荐
SharePoint 网站和模板的升级工具包
Luis Câmara Manoel and Peter Skjøtt Larsen
下载这篇文章的代码: Upgrade Toolkit for Windows SharePoint Services Sites and Templates (699KB)

最近，随着 Windows SharePoint Services (WSS) 3.0 的全新发布，许多管理员都面临着这样一个任务，即将现有 WSS 2.0 网站和数据升级到新的 WSS 3.0 环境中。虽然 WSS 3.0 提供了大量的工具来帮助管理员迁移网站数据和
升级网站结构，以达到令人满意的效果，但要想升级自定义的网站或网站模板的结构，可能还需要多花点时间。
额外的工作是不可避免的。幸运的是，Microsoft® Solution Accelerator 团队针对 Windows® SharePoint® Services 网站和模板发布了升级工具包，该工具包为升级实践提供了相关的指导和工具（请参阅“WSS 资源”侧栏）。本期专栏重点介绍将自定义网站升级到 WSS 3.0 环境所面临的挑战和与之相关的解决方案。但首先请您参阅“WSS 技术”侧栏中的一些常见术语定义，以便对我们谈论的内容有所了解。

升级过程
为什么需要升级？网站站长可能会由于 WSS 3.0 提供大量的新功能而考虑升级：
  • 回收站，用户可以在这里找回不小心删除的文档。
  • 文件夹项目级别的安全性，网站管理员可以控制用户或组对文件夹的访问权限。
  • 发送电子邮件到列表，使 SharePoint 网站上的列表（例如，博客日志列表）能够通过电子邮件接收内容。
  • “网站操作”按钮，用户可以通过该按钮轻松创建网站和页面、编辑页面和管理网站设置。
  • Breadcrumb，为用户提供直接的导航上下文。
  • 移动视图，移动用户可以充分利用便捷的脱机同步功能。
  • RSS 源，使 Internet Explorer 7.0 和 Outlook® 2007 等支持 RSS 的程序能够从列表中检索信息。
  • 在文档库中进行版本控制，允许在编辑之前进行微小的版本控制和文档签出控制。
由于网站和模板的升级过程取决于在服务器实际升级到 WSS 3.0 前后执行了哪些具体步骤（请参见图 1），因此定义网站和模板的升级需求是整个 WSS 3.0 升级策略中的一个重要步骤。网站管理员和服务器管理员应协同工作来确定应将哪些网站和模板实例化并升级到 WSS 3.0 环境中。确定好需要升级的自定义网站后，就可以开始升级工作了。
图 1 WSS 网站和网站模板升级的工作流
图 1 WSS 网站和网站模板升级的工作流

识别自定义网站模板
如何确定是否已对网站进行自定义？WSS 3.0 提供了预升级扫描工具，该工具可以生成有关对整个场中网站模板所做更改的报告因此在开始迁移前应先运行此工具，以选择出需要特别予以注意的网站模板。
该工具可以生成如图 2 所示的 XML 格式的报告。unghostedPage 元素表明网站已进行了自定义。
Figure 2 有关网站模板更改的预升级扫描工具报告 (Close Figure 2)
<?xml version=”1.0” encoding=”utf-8”?>
<summary>
  <sites>
    <site url=”http://mscc-shr-v3-01” storage=”172767226”>
      <webs>
        <web url=”http://mscc-shr-v3-01/Board of Directors-Basic”>
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/default.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/AllItems.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/DispForm.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/EditForm.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/Upload.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Board Information/
                Forms/WebFldr.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Company Finance and
                Business Planning/Forms/AllItems.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Company Finance and
                Business Planning/Forms/DispForm.aspx” />
          <unghostedPage url=”http://mscc-shr-v3-01/Board of Directors-Basic/Company Finance and
                Business Planning/Forms/EditForm.aspx” />

自定义网站定义
您希望升级的大多数自定义 WSS 2.0 网站可能都是通过模板生成的，这些模板是基于标准 WSS 网站定义创建的。但也有些自定义网站模板是基于自定义网站定义而生成的。如果您组织内的开发人员创建了自定义网站定义，或者您购买了基于自定义网站定义创建的第三方应用程序或模板，则可能出现这种情况。此专栏讨论的内容仅涉及标准网站定义。有关自定义网站模板方案的详细信息，请参见“WSS 资源”侧栏。
如果经过验证，您的 .stp 文件和网站确实是通过标准网站定义生成的，也就意味着 WSS 3.0 中存在升级网站定义，这时您可以继续安装和实例化网站。
要升级特定的 WSS 2.0 网站模板，首先您需要在 WSS 2.0 服务器上安装这些模板（请参见图 1 中的“阶段 1”）。然后您需要基于已安装的模板来创建网站。
完成升级过程后要安装多个 .stp 文件、实例化多个网站并清除服务器中的所有临时文件，为简化这一过程，Solution Accelerator 提供了一组利用 Stsadm.exe 命令的脚本（有关详细信息，请参见“解决方案脚本”侧栏）。Stsadm.exe 是一个命令行应用程序，它提供了一套完整的 WSS 操作，可用于管理 SharePoint 服务器和网站。使用解决方案脚本可以实现该过程的自动化，您可以执行批量的安装和实例化，或按顺序执行这些任务。如果您需要安装多个 .stp 文件和实例化多个网站，这种做法可以节省大量时间。
解决方案脚本
模板安装和网站创建过程要用到两个运行 Stsadm.exe 的脚本：
  • MigInstStp.cmd 使用 Stsadm.exe addtemplate 操作安装网站模板。此操作具有 _SOURCEFILELOCATION、_SOURCEFILENAME 和 _FILETITLE 参数。
  • MigMakeSite_1.cmd 用于创建新的网站。MigMakeSite_1.cmd 运行的是 Stsadm.exe createweb 操作。此操作具有 _SERVERURL、_SITENAME、_SITETEMPLATENAME 和 _SITETITLE 参数。
保存网站模板 (.stp) 文件，然后在能够访问这些文件的本地 WSS 2.0 服务器上运行上述脚本。要运行这些脚本，您必须是服务器上本地管理员组的成员，或者是具有网站创建权限的 WSS 管理员组的成员。《Windows SharePoint Services 网站和模板升级工具包指南》提供了有关如何充分利用这些脚本的详细说明。在安装 .stp 文件和实例化网站后，您就可以继续升级服务器了。“升级到 Windows SharePoint Services 3.0”中详细说明了 WSS 3.0 的升级方法（请参阅“WSS 资源”侧栏列出的链接）。

WSS 术语
Windows SharePoint Services 具有自己独特的术语。下面是一个包含常用术语的简要术语表。
网站定义：一组文件，用于定义特定类型的网站。一个网站定义不仅包含 .xml、.aspx、.ascx 和母版页文件，还包括存储在前端 Web 服务器上特定文件夹中的列表模板文件和内容文件。WSS 附带了一组现成可用的标准网站定义，包括工作组网站、空白网站和文档工作区。最初，网站模板库中只有这些网站模板，“新建 SharePoint 网站”上的“选择模板”列表中只有这些网站模板是可用的。
网站模板：网站模板定义了如何对 SharePoint 网站进行实例化。为了创建新的 SharePoint 网站，您必须选择一个网站模板，网站的创建就是基于这个模板的。例如，您可以基于标准的“空白网站”模板创建一个名为“董事会”的新网站。然后，可以将列表、库、Web 部件和其他自定义内容添加到实例化的网站。为了让其他用户也能够使用这些自定义内容，您可以将该网站另存为模板，并命名为“董事会”。它基于“空白网站”的网站定义。WSS 将该自定义网站模板另存为 .stp（网站模板）文件，然后将其放入网站模板库，并在“新建 SharePoint 网站”页面的“选择模板”列表中显示它，以便用户稍后可以基于该文件创建新网站。网站模板中包含一系列网站配置文件，例如 .xml、.aspx、映像等其他文件，这些文件被压缩在一个单独的 .stp 文件中。（.Stp 文件的功能与 .cab 文件相似。）这些文件中最重要的文件是 Manifest.xml，它包含了很多重要的信息，例如网站结构和导航、列表和库、Web 部件的位置、自定义列表定义以及自定义网站模板所基于的网站定义。
应用程序模板：这些是为满足特定业务流程或任务需要而开发的 Windows SharePoint Services 网站模板。这些模板由 Microsoft 发布，WSS 客户可以免费下载。
自定义网站：这是用户界面经过修改的 SharePoint 网站。
母版页：这是存储默认布局信息（如横幅、导航控件和其他菜单）的区域，目的是实现整个网站内界面的统一。
模板页面：这些页面的内容并非存储在 WSS 内容数据库中，而是从网站定义文件中读取。模板页面尚未自定义。
非模板页面：这些是经过修改的页面，其与网站定义文件不同，内容存储在 WSS 内容数据库中。

服务器升级完毕后 — 网站检查
现在，您已到达升级工作流中的“阶段 2（请参见前面的”图 1）。网站和模板升级的这一阶段需执行以下步骤：
  1. 打开并验证升级后的网站。
  2. 应用默认的母版页。
  3. 修复新网站在功能和布局方面的问题。
  4. 将更正的网站另存为新的 WSS 3.0 网站模板。
  5. 在服务器上重新部署新的 WSS 3.0 网站模板。
  6. 通过重新部署的网站模板创建网站。
  7. 打开新网站，检查其是否按预期正常运行。
  8. 进行收尾工作。

重置网站定义
在首次打开升级后的网站时，您会发现它仍然与 WSS 2.0 网站非常相似。要使网站看上去更像 WSS 3.0 网站，您必须首先重置为新的 WSS 3.0 网站中的网站定义。此操作可以修复大多数布局问题，并且您不会丢失对 Web 部件进行的任何自定义，前提是这些 Web 部件已包含在网站定义页面上的现有 Web 部件区域中。此操作还将默认的母版页应用到网站的所有页面。
顾名思义，母版页中存储着默认的布局信息（如横幅、导航控件和其他菜单），其目的就是实现一致的外观。使用母版页时，您可以首先对母版页进行设计和更改，然后再将更改传播到整个网站。应用母版页后，升级后的网站即可启用所有 WSS 3.0 标准功能。
现在，虽然网站的外观和运行方式都与本地 WSS 3.0 网站相似，但您也许会发现某些区域仍然存在问题，例如讨论板、自定义 Web 部件、超链接和主题。

修复存在的问题
升级后的自定义网站模板中会出现许多问题。下面列出了一些最常见的问题和简要的修复方法。
网站使用的仍然是 WSS 2.0 的默认样式表。 请在 SharePoint Designer 中删除旧的样式表。
Web 部件丢失或位置错误。 使用 SharePoint Designer 移动或插入 Web 部件。
Web 部件无法正常运行。 删除与 WSS 3.0 不兼容的 Web 部件，联系 Web 部件开发人员，询问是否已开发出适用于 WSS 3.0 环境的相应 Web 部件。
自定义列表和库看上去不正确。 保存现有数据，然后重新创建自定义列表或库，再将保存的数据导入。
启用的 WSS 3.0 功能不可用。 工作组协作功能可能需要在“网站功能”下显式激活。
超链接失效。 硬编码的超链接可能需要手动进行更新。
主题被更改。 应用适当的 WSS 主题。

大功即将告成
升级过程已接近尾声，所有问题均已修复，现在要对网站进行最后的验证。您应该将更正的网站另存为 WSS 3.0 网站模板，执行新的 .stp 安装和网站实例化操作（也可以使用简便的脚本），最后打开网站进行验证，确保所有问题已被解决并且升级后的站点和已经准备就绪，可以进一步部署到工作环境。

其他可选的升级方案
有时，使用此处描述的自动化工具和过程升级模板可能并非最佳方法。如果使用高度自定义的第三方模板，则自行升级模板可能会非常困难，等待新版本模板的发布可能是更好的办法。在其他情况下，最好还是在 WSS 3.0 中创建全新的模板，然后再实现旧模板中的功能。

应用程序模板
Microsoft 开发了一组可用于 WSS 2.0 和 WSS 3.0 的应用程序模板。新的 WSS 3.0 模板中包含一些 WSS 2.0 应用程序模板的升级版本。如果您一直使用其中的某个模板，可以将其升级的 WSS 3.0 版本上传到 WSS 3.0 环境中。
如果您一直在使用某个 WSS 2.0 应用程序模板，并尚未针对 WSS 3.0 升级，Solution Accelerator 还提供了一组经过升级的 WSS 2.0 应用程序模板，您可以将其用于 WSS 3.0 环境。

总结
Windows SharePoint Services 网站和模板的升级工具包非常有用，可以帮助您在 3.0 环境中保留 2.0 模板、网站和自定义内容。有关此主题的详细信息或希望获得该工具包，请访问“WSS 资源”侧栏中提供的网站。
我们要感谢 Betty Houser 为本专栏和 Solution Accelerator 做出的杰出贡献。
WSS 资源
  • 预升级扫描工具
  • Windows SharePoint Services 网站和模板的升级工具包
  • 升级到 Windows SharePoint Services 3.0（Windows SharePoint Services 3.0 技术资源库）
  • 部署升级的定义文件和新的网站定义

Luis Câmara Manoel是 Microsoft Solution Accelerator 组的项目经理。他在 Microsoft 工作已满一年。在进入 Microsoft 之前，Luis 在美国犹他州普罗伏的 Novell Inc 附属公司 Volera 担任项目经理。您可以通过电子邮件 luiscam@microsoft.com 与 Luis 联系。
Peter Skjøtt Larsen是 Microsoft Solution Accelerator 组的产品经理。他在 Microsoft 工作已经四年多了，主要从事开发和市场营销工作。此前，他曾为金融、工程和电信行业开发过客户端和服务器软件。您可以通过电子邮件 petela@microsoft.com 与 Peter 联系。


 IT 业务: 制定业务计划
IT 业务
制定业务计划
Stephen Ibaraki

尽管对于许多读者而言这可能已是旧闻，但在当今，如果缺乏良好的论证，您就无法进行 IT 采购或投资。仅为了拥有最新的计算技术创新而进行采购，这已成为一种过时的方案。不受限制、无计划的技术曾经被视为通往市场
统治地位和发展之路。网络兴盛时代的到来导致了这一概念的终结，并为 IT 带来了沉重负担。如今，人们必须回归到 IT 项目业务的真正价值。
在紧缩的预算情况下，如何能够证明 IT 投资的可行性？通过将业务案例与全面统一的技术解决方案相结合，可以解决这一问题。这究竟是怎样的呢？构成业务案例的重要元素都有哪些？如何采用一个业务计划模型来论证 IT 项目？在将适当的技术解决方案集成到业务案例中时应当注意哪些方面？在此，我将为您提供构建案例时要考虑的一些信息。

构建业务
一个成功的企业或组织必须为其利益相关人员（包括雇员、客户、合作伙伴、供应商和所有者）产生可以计量的价值。此价值必须进行明确定义和度量，并不断进行调整以求改善。
在关联日益密切的当今社会中，企业必须实现与内部网络和外部网络的有效协作，从而实现实时关系交互的最大化。谁希望等待服务、查询的答复或产品交付？谁会希望因通讯故障而延迟项目或取消活动？随着 Internet 时代的到来以及不断加快的全球化步伐，竞争可能在本国或全球范围内进行。因此，企业必须在这一竞争环境中创建独一无二的优势。组织怎样才能脱颖而出呢？
此外，企业还必须灵活：企业必须不断了解内部环境和外部环境，并且能够快速进行选择，然后从一系列备选方案中实施业务计划。在此过程中，企业充分利用其优势并改正其弱点，以便利用新机会。利用这些机会通过新市场、新客户、新产品和新服务实现增长。企业还必须评估和减轻包括竞争对手在内的威胁。在执行所有这些任务时，重点在于提高生产率和效率，同时管理运营成本和风险。
技术投资必须形成这种灵活性，才能以更快的速度推向市场、对客户需求做出即时响应、预期竞争性威胁、提高生产率、改进效率、降低运营成本和风险。
迄今为止，我已经介绍了业务成功的驱动因素，以及 IT 必须如何支持和符合这些驱动因素。实际上，如果未实现这一点，IT 就会成为一项无法论证其存在的开销。采用业务计划方法，您可以构建确保您业务成功的业务案例。这将转化为 IT 成功。

创建业务计划
将 IT 投资与增加的业务价值（独特性、低成本、市场关注、协作和创新）相关联，这一点十分重要。业务计划方法可满足此需求。
图 1 中简单介绍了 IT 业务计划的基本元素。计划的目标是什么？任务和构想说明描述了企业当前的现状及其未来的发展目标。确保您明确解释了您的 IT 项目如何支持这一整体目标。您还需要清楚说明 IT 投资与业务目标之间的关联，特别是 IT 目标如何支持企业的战略方向，两者必须一致。
Figure 1 业务计划元素 (Close Figure 1)

元素 | 说明
目的 | 概括出投资与业务目标之间的联系。
构想 | 业务成果以及 IT 如何支持这一目标。
任务 | 当前业务以及 IT 如何促进这一业务任务。
业务机会 | 要获取的市场和业务价值。
业务模型 | IT 所提供的用于捕获业务机会的产品或服务。
目标市场 | 要为其服务的客户（或潜在客户）。
与 IT 的集成 | 产品和服务与技术资源之间相对应。
竞争性分析 | 竞争对手以及优势和劣势的列表。
SWOT 分析 | 优势、劣势、机会和威胁。
资源分析 | 现有的基础结构和所需的计划资源。
IT 成功的度量标准 | 可以度量的计划的各方面。
财务预测 | 投资回报的期限。
业务机会的说明应解释 IT 如何能够实现或支持新的业务机会以及其回报价值。特定的业务模型是什么？企业提供的哪些产品和服务产生了收入回报？潜在市场有多大？因 IT 方面的改善可获取的金额为多少？IT 如何支持这一业务模型的发展？您应说明 IT 投资如何能够改善上述业务模型中的工作流和业务流程，包括改善运营、降低成本、提高效率、促进协作、增强通讯、计划编制和消息传递。所有这些都有助于降低成本或提高生产效率。不要忘记列出在企业运营中可以通过 IT 实现的创新。
此外，您应说明您的目标市场。考虑您的 IT 计划如何帮助企业提高对现有目标市场或新市场的占有率。讨论要用于产品和服务的交付系统，以及 IT 支持如何能够向这些市场提供更好的服务和交付。
接下来，应直接转到检查您的企业的产品或服务如何与 IT 技术相集成。在集成的统一技术平台上有哪些关键的特定产品和服务？IT 如何支持这些产品或服务？这与业务目标如何关联？在此，您可以开始建议 IT 如何改善服务管理、项目交付、内部和外部关系。IT 使业务变更成为可能，这包括提高服务水平预期、提供有效监管、确定优先级别、确保法规遵从性、隐私性和安全性。您的业务计划中应说明上述所有要点。
竞争性分析提供了您的企业所处的竞争环境的概况。您有哪些竞争对手？他们具有哪些优势和劣势？指出您的竞争对手将如何使用技术以及如何改善其市场定位。IT 是否为您的企业提供了超越其竞争对手的竞争性优势？解释 IT 如何提高您的业务灵活性、促进增长、加快进入新市场的速度、支持新客户、改善对现有客户的服务等等。技术如何为您的企业提供独特性和业务优势？IT 如何增加竞争对手的进入壁垒？
SWOT 分析形成了与您的业务相关的优势、劣势、机会和威胁的概览。企业面对哪些外部机会和威胁？IT 如何增强企业的内部优势以充分利用新的外部机会？IT 如何克服内部缺点并通过这些措施让公司能够抓住新机会？通过 IT 投资如何减少或减轻外部威胁？
确保在实施之前、期间和之后都考虑到 IT 投资的资源需求。这包括人员、硬件和基础结构。您可以充分利用哪些现有知识或基础结构？您还需要为哪些制订预算？需要多长时间才能收回新培训或设备的成本？如果除您的特定业务计划之外还有其他的新投资优势，请确保也对这些优势进行说明。
要了解您的业务计划是否符合预期，您应事先清楚说明成功的度量标准。可以从哪些方面对您的计划进行度量？度量成功与否的时间间隔为多长？如果未能有效支持您的目标，您将采取什么措施？如果遇到意料之外的破坏性因素，您有怎样的后备计划？
如果缺乏财务预测，业务计划将不完整。总拥有成本是多少？在新的业务机会中如何论证该成本？这些机会的价值是多少？在获得业务成功的过程中，通过哪些方式在何处实现投资回报？投资回报的期限有多长？IT 如何通过收入和获利能力增长以及降低成本来促进实现企业的财务目标？

持续发展
您的计划是否会实际奏效，这一点没有任何保证。但是，认真考虑并制定一项业务计划，这会使您处于主导地位。您将详细考虑所有可能的问题，从而修改您的计划或对突发事件有大致了解。您还将清楚了解所涉及的成本和收益，包括不再发生的成本。最后，如果没有进行度量所依据的某种标准，就无法知道您是已取得成功还是失败。如果要向上司展示您的计划对于业务成果和时间的重要性，这些度量标准将十分有帮助。
有关 IT 业务的不断进行的对话，我建议您查阅 IT Managers Connection，网址为 blogs.technet.com/cdnitmanagers。此外，还可以从 Microsoft 网站上获得许多与业务计划相关的资源。Small Business Center 在以下网址提供了一个有关编写业务计划的教程：microsoft.com/smallbusiness/resources/startups/business_plans_ entities/how_to_write_a_business_plan.mspx；除了随 2007 Microsoft Office System 附带的那些模板外，您还可以从 Office Online (office .microsoft.com/en-us/templates) 找到许多业务计划模板。

Stephen Ibaraki是一位在业务和技术上屡获殊荣的教授，在 IT 领域具有 35 年以上的丰富经验。他目前担任国际网络专业人士协会 (NPA) 的副主席。您可以通过 www.StephenIbaraki.com 与他联系。


 网络专家: Windows 中的 EAPHost
网络专家
Windows 中的 EAPHost
Joseph Davies
本专栏中有关 Windows Server“Longhorn”的预发布信息可能会有所变动。

当访问客户端连接到受保护的网络时，客户端必须使用协商的身份验证方法向身份验证服务器进行验证。例如，访问客户端和身份验证服务器可能协商使用特定的密码身份验证协议，例如第二版 Microsoft 质询握手身份验证协议
(MS-CHAP v2)。但是，如果访问客户端和身份验证服务器使用内置的硬编码身份验证方法，则难以添加新协议。
可扩展的身份验证协议 (EAP) 是一种体系结构框架，它为常用受保护的网络访问技术（如基于 IEEE 802.1X 的无线网络）和点对点协议 (PPP) 连接（如拨号连接和 VPN 连接）提供可扩展的身份验证方法。EAP 不同于 MS-CHAP v2 身份验证方法，它是基于访问客户端和身份验证服务器的体系结构框架，它允许网络供应商开发并轻松安装称为 EAP 方法的新身份验证方法。有关 EAP 的更多背景信息，请访问 Microsoft EAP 网页，网址是：microsoft.com/eap。
尽管自 Windows 2000 起 Microsoft® Windows® 就支持 EAP，但 Windows XP 和 Windows Server® 2003 中的 EAP 体系结构对于 EAP 方法和请求方（可以在特定类型的链路层上使用 EAP 的软件组件）还是存在扩展限制。Windows Vista™ 和代号为“Longhorn”的下一版 Windows Server 中的 EAPHost 体系结构解决了这些限制，使第三方网络供应商可以为新的请求方和 EAP 方法更轻松地扩展 Windows。

Windows Server 2003 和 Windows XP 中的 EAP 支持
Windows Server 2003 和 Windows XP 将 EAP 用于以下连接：使用 802.1X 进行身份验证的无线或有线连接，以及基于 PPP 的连接（如基于拨号或 VPN 的远程访问或者站点对站点的连接）。具体来说，这些操作系统包含符合 RFC 2284 的 EAP 实现，并包含 IEEE 802.1X 和 PPP 请求方。图 1 显示了 Windows XP 和 Windows Server 2003 的 EAP 和请求方体系结构。但是，请注意，在 Windows XP Service Pack 2 (SP2) 和 Windows Server 2003 SP1 中的 EAP 实现都不支持 RFC 3748（用于 EAP 的最新 Internet 标准）和其他 EAP RFC。
图 1 Windows XP 和 Windows Server 2003 的 EAP 及请求方体系结构
图 1 Windows XP 和 Windows Server 2003 的 EAP 及请求方体系结构
EAP API 提供了在 Windows XP 和 Windows Server 2003 中扩展身份验证的方法。尽管第三方供应商可以开发和安装新的 EAP 方法，但内置的 PPP 和 802.1X 请求方并不能使用所有安装的 EAP 方法。例如，供应商可以创建新的具有指纹扫描功能的 EAP 身份验证方法，但是该方法可能不能用于无线连接。
由于内置请求方的限制，某些第三方软件和硬件供应商开发他们自己的请求方时，通常需要替换和禁用内置的请求方和整个 EAP 体系结构。但是，这种替换方法存在几个问题。首先，替换内置请求方和 EAP 体系结构会增加开发成本并导致开发延迟。此外，如果企业客户不开发自己的请求方，则可能会增加授权和安装第三方产品而带来的每客户成本。

EAPHost 功能
EAPHost 提供以下新功能：
支持其他 EAP 方法。 EAPHost 将支持 www.iana.org/assignments/eap-numbers 上的 EAP 注册表中列出的所有 EAP 方法的安装和使用，以及其他流行的身份验证方法，例如由 Cisco Systems, Inc. 开发提供的 Lightweight EAP (LEAP)（轻型 EAP (LEAP)）。
网络发现。 EAPHost 支持 RFC 4284 中所定义的网络发现。
符合 RFC 3748。 EAPHost 符合 EAP 状态机，并解决了 RFC 3748 中指定的众多安全漏洞。而在以前，请求方必须实现自己的状态机。此外，EAPHost 还支持“扩展的 EAP 类型”等功能（包括特定于供应商的 EAP 方法）。
EAP 方法共存。 EAPHost 允许同一个 EAP 方法的多个实现共存。例如，可以同时安装和选择 Microsoft 版本的 Protected EAP（受保护的 EAP，PEAP）和 Cisco Systems, Inc. 版本的 PEAP。
模块化请求方体系结构。 EAPHost 支持模块化请求方体系结构。在该体系结构中，可以轻松地添加新的请求方，而不必像早期版本中那样替换整个 EAP 实现。
对于 EAP 方法供应商，EAPHost 支持针对 Windows XP 和 Windows Server 2003 开发的 EAP 方法，并提供一种更为简单的方法，用以为 Windows Vista 和 Windows Server“Longhorn”开发新的 EAP 方法。EAPHost 还可以更好地对 EAP 类型进行分类，从而可供内置的 IEEE 802.1X 请求方使用。
对于请求方供应商，EAPHost 支持新链路层的其他请求方。由于 EAPHost 与网络访问保护 (NAP) 相集成，因此新的请求方不必具备识别 NAP 的功能。为了加入 NAP，新的请求方只需注册一个连接标识符和一个通知请求方重新进行身份验证的回调函数。有关 NAP 的详细信息，请参阅本期《TechNet 杂志》中 John Morello 撰写的“安全观察”专栏，以及 NAP 网页 microsoft.com/nap。有关如何开发 EAP 方法或 EAPHost 请求方的详细信息，请参阅“可扩展的身份验证协议 (EAP) 宿主”，网址是 msdn2.microsoft.com/aa364249.aspx。

EAPHost 和 EAP 基础体系结构
EAPHost 体系结构包括：EAPHost 的 EAP 基础体系结构、EAP 对等方（身份验证客户端）上的 EAPHost 体系结构，以及身份验证服务器上的 EAPHost 体系结构。图 2 显示了在运行 Windows Vista 或 Windows Server“Longhorn”的计算机上，EAPHost 的 EAP 基础体系结构的组件。在这些操作系统上，EAP 对等方包含：一个请求方层（如 802.1X 的内置请求方），用于 EAP 对等方的新 EAPHost 体系结构（便于请求方和 EAP 方法的通信和管理），一个执行身份验证的 EAP 方法层。
图 2 EAPHost 的 EAP 基础体系结构
图 2 EAPHost 的 EAP 基础体系结构
Windows Server“Longhorn”的身份验证服务器包含：网络策略服务器 (NPS)，用于身份验证服务器的新的 EAPHost 体系结构，以及一个 EAP 方法层。在 Windows Server 2003 中，NPS 被称为 Internet 验证服务 (IAS)，它是一个远程身份验证拨入用户服务 (RADIUS) 服务器和代理，也是 NAP 的策略服务器。
EAP 对等方中的请求方使用链路层技术（如 PPP 或 802.1X）在 EAP 对等方与传递验证器（如无线接入点或远程访问服务器等网络访问服务器）之间的链路上发送和接收 EAP 消息。在身份验证服务器上，传递验证器和 NPS 使用 RADIUS 在传递验证器与 NPS 之间，在基于 IP 的网络上发送和接收 EAP 消息。
在 EAP 对等方和身份验证服务器协商使用特定的 EAP 方法后，逻辑通信则包含在 EAP 对等方上协商的 EAP 方法与身份验证服务器之间发送的 EAP 消息。
图 3 显示了运行 Windows Vista 或 Windows Server“Longhorn”的 EAP 对等方上的 EAPHost 体系结构。该体系结构包含请求方、EAPHost 组件、EAP 方法管理组件和 NAP 组件。
图 3 EAP 对等方上的 EAPHost 体系结构
图 3 EAP 对等方上的 EAPHost 体系结构
Windows Vista 和 Windows Server“Longhorn”包括针对基于 802.1X 的无线和有线连接的 802.1X 请求方。目前正在对用于基于拨号或 VPN 的远程访问、或者站点对站点连接的 PPP 请求方进行研究，以便将来更新这两个操作系统。此外，还可以添加由第三方开发的其他请求方。EAPHost API 允许请求方使用 EAP 进行连接。有关详细信息，请参阅 msdn2.microsoft.com/aa364249.aspx 上的相关文章。
EAPHost 组件包括 EAP 客户端状态机/协议验证器，用于维护 EAP 对等方状态机（请参阅 RFC 3748）和验证 EAP 消息。此外，还包括 EAP 方法管理器，用于管理各种 EAP 方法（无论是否与 EAPHost 兼容），使 EAP 方法可供应用程序和服务使用。最后，还包括 EAP 库管理器，以便于加载和卸载 EAP 方法库。
EAP 方法组件包括：
内置 EAP 方法。 其中包括 PEAP、EAP 传输层安全性 (TLS) 和 EAP-MS-CHAP-V2。
两个宿主 API。 它们承载非 EAPHost 兼容的 EAP 方法（原有 EAP API）和第三方的 EAPHost 兼容的 EAP 方法（EAPHost 方法 API）。
原有转换器方法。 用于在非 EAPHost 兼容的 EAP 方法（写入到原有 EAP API）与 EAPHost 方法 API 之间进行转换。
EAP 方法代理管理器 . 用于承载第三方 EAP 方法（无论它们是否与 EAPHost 兼容）。
EAP 方法 API 是新的 API，用于 EAPHost 兼容的 EAP 方法。EAP 方法导出 EAP 方法 API 中定义的 API。EAPHost 加载 EAP 方法并调用导出的 API 函数。
NAP 组件包括以下各项：
EAP NAP EC Messenger . 该组件可以促进 NAP 相关数据的通信，例如在 EAPHost NAP 强制客户端 (EC) 与 EAPHost 其他组件之间的运行状况和事件声明。
EAPHost NAP EC . 该组件与其他 NAP 组件进行交互，以提供运行状况验证，并在 802.1X 身份验证的连接不符合 NAP 系统运行状况要求时进行强制限制访问。
NAP 代理。 该组件维护客户端当前运行状况，并促进安装的 NAP EC 与系统运行状况代理 (SHA) 层之间进行通信。每个 SHA 都可以针对一个或多个系统运行状况要求进行定义。
如图 3 所示，第三方供应商可以开发新的请求方和新的 EAPHost 兼容的 EAP 方法。您也可以使用为 Windows Server 2003 或 Windows XP 开发的现有 EAP 方法。
图 4 显示了运行 Windows Server“Longhorn”和 NPS 的身份验证服务器上的 EAPHost 体系结构。 该体系结构与支持 EAP 方法的 EAP 对等方的体系结构相同。 不必通过请求方，该身份验证服务器通过 NPS 用 EAPHost API 来使用和配置 EAP 方法。在 EAP 组件内，EAP 服务器状态机/协议验证器执行以下任务：维护 EAP 身份验证服务器状态机，并验证传入的 EAP 消息。
图 4 身份验证服务器上的 EAPHost 体系结构
图 4 身份验证服务器上的 EAPHost 体系结构
身份验证服务器上的 EAPHost 允许第三方软件供应商开发和安装新的 EAPHost 兼容的 EAP 方法，并支持已针对 Windows XP 和 Windows Server 2003 开发的 EAP 方法。
对于 EAP 对等方和身份验证服务器，EAPHost 还提供了 EAPHost UI 代理 API（图 3 和图 4 中未显示），EAPHost 兼容的方法可将其用于显示需要用户交互的对话框。EAPHost UI 代理 API 允许第三方供应商添加自己的对话框，来提供更加完美的用户体验。

总结
Windows Server“Longhorn”和 Windows Vista 中的 EAPHost 将 Windows 中的 EAP 实现按最新 Internet 标准进行了更新，并提供了新的模块化体系结构，以便用 EAP 身份验证方法和请求方来扩展 Windows。网络供应商通过开发新请求方（写入 EAPHost API）和新身份验证方法（写入 EAPHost 方法 API），而无需替换整个 Windows EAP 实现即可扩展 Windows 中的现有用户体验。EAPHost 还支持为 Windows Server 2003 和 Windows XP 开发的现有 EAP 方法。
针对 Windows XP 的 EAPHost
Microsoft 计划针对 Windows XP SP2 发布一个更新，它将包含 EAPHost 体系结构和一个用于有线 802.1X 连接的基于 EAPHost 的请求方，并支持 RFC 3748。通过这一更新，针对 Windows Vista 开发的 EAPHost 请求方也可以在 Windows XP SP2 上运行。有关此更新的最新信息，请参阅 NAP 产品团队博客，网址是：blogs.technet.com/nap。

Joseph Davies是 Microsoft 的技术撰稿人，自 1992 年以来就一直从事有关 Windows 网络主题方面的培训和编撰工作，在 Microsoft Press 出版了 5 本著作，是 TechNet 网络专家专栏月刊的作者。


 Windows Powershell: WMI 连接
Windows Powershell
WMI 连接
Don Jones

我在 VBScript 领域非常依赖的技术之一是 Windows Management Instrumentation (WMI)。有趣的是，Windows PowerShell 与 WMI 有着密切的联系，这不仅仅是在技术意义上。Windows PowerShell 的设计者 Jeffrey Snover 在创建
Wmic.exe 时也担任了重要角色，Wmic.exe 是 Windows Server® 2003 中与 WMI 一起使用的命令行工具。Wmic.exe 在许多方面表现了与 Windows PowerShell™ 类似的工作方式（有关 WMIC 的详细信息，请参阅 John Kelbley 在 2006 年 9 月的《TechNet 杂志》上发表的文章，您可以在线访问，网址是 microsoft.com/technet/technetmag/issues/2006/09/WMIData）。
Windows PowerShell 以一致、基于对象的方式（与通过 Shell 的其他功能获得的方式相同）支持所提供的 WMI。与以前的技术（如 VBScript）相比，这使得 WMI 更容易学习和使用（尤其是在一些特殊情况下）。

WMI 入门
如果您阅读有关脚本的书籍和文章，几乎都会提到 WMI。不过，在实际使用 WMI 时，如果忘记其内部构造方式，则会感到非常迷茫，而且 WMI 的构造方式对于它在 Windows PowerShell 中的工作方式极其重要。
WMI 主要是一个组织类的系统，表示 Windows® 操作系统和其他基于 Windows 的硬件和软件产品的管理信息。类实际上就是对一些给定软件或硬件组件进程的属性和功能的抽象描述。例如，逻辑磁盘类可能描述具有一个序列号、一个固定的存储容量、一定的可用容量等内容的设备。同时，描述 Windows 服务的类可能指定该服务有一个名称、可以启动和停止，以及指定其当前状态等。
在 WMI 中，类表示 WMI 可以管理的所有内容。如果 WMI 没有可用于某些内容的类，则它无法管理该组件。Microsoft 在 msdn2.microsoft.com/aa394554.aspx 中记录了核心 Windows WMI 类；其他产品（如 Internet 信息服务、SQL Server™）分别记录了它们的 WMI 类。
由于存在特别多的类，因此 WMI 将它们组织到命名空间层次结构中。例如，包含核心 Windows OS 类的命名空间称为 root\cimv2，而 Microsoft IIS 6.0 将其类存储在 root\MicrosoftIISv2 中。方便的是，root\cimv2 命名空间是 WMI 的默认命名空间（由 Windows PowerShell 共享的设置），这使得它可以更容易地与这些核心类一起使用。
“实例”是一种实际存在的类。例如，如果您的计算机有两个逻辑磁盘，则会有 Win32_LogicalDisk 类的两个实例。如果在您的计算机上运行 50 个服务，在 WMI 上将会看到 Win32_Service 类的 50 个实例。使用 WMI 实际上就是请求 WMI 为您提供一个或多个实例，然后，要么检查这些实例的属性以发现您需要的管理信息，要么执行这些实例的方法来进行管理更改（例如启动或停止服务）。
WMI 使用客户端-服务器体系结构。Windows 2000 以后的每个 Windows 版本都内置了 WMI（后续版本扩展了可用类的数量），这意味着为您同时提供了 WMI 客户端和 WMI 服务器软件。在使用 WMI 时，您实际上是向在您关注的计算机上运行的 WMI 服务发送请求。该 WMI 服务检索您指定的 WMI 实例，并将其返回给您以供使用。这就是 Windows PowerShell 的作用，它简化了请求实例、返回实例和使用实例的过程。

获取 WMI 对象
WMI 类实例大致是指一些对象，因此在 Windows PowerShell 中检索这些实例的方法是 Get-WMIObject cmdlet，这很有意义。此 cmdlet 有一个方便的别名 gwmi，我将在大多数示例中使用这个别名。对于最简单的形式而言，您只需指定要检索的 WMI 类名称，然后悠闲地等着查看结果即可（请参见图 1）。在运行 gwmi win32_service 时，Windows PowerShell 连接到我本地计算机上的 WMI 服务（因为我没有指定其他计算机）并连接到 root\cimv2 命名空间（因为我没有指定其他命名空间）。Windows PowerShell 检索指定类的所有实例，由于我没有指示对这些实例执行其他任何操作，因此它将这些实例转换为文本表示形式。换句话说，Windows PowerShell 获得这些对象，并将其生成可以阅读的文本。
图 1 在运行 gwmi win32_service 时，Windows PowerShell 以可读的文本格式返回指定类的所有实例
图 1 在运行 gwmi win32_service 时，Windows PowerShell 以可读的文本格式返回指定类的所有实例
具体而言，Windows PowerShell 通过读取和显示所选类属性的名称和值将 WMI 对象转换为文本。对于 Win32_Service 类，它选择一组属性（共六个）。
实际上，Windows PowerShell 通过此方式将所有对象转换为文本。它选择显示的属性大部分在一组 .format.ps1xml 文件中定义，该文件位于 Windows PowerShell 的安装文件夹中。这些格式定义文件经过 Microsoft 数字签名。尽管您可以提供自己的格式设置文件，但建议您不要更改这些文件。（在以后的专栏中，我将更详细地探讨这一主题。）
gwmi cmdlet 可以帮助您浏览计算机，查找有哪些可用类。例如，运行 gwmi –namespace "root\cimv2" –list 可以获得该命名空间中类的完整列表。但请记住，如果您在管理您的计算机，则仅与您计算机上的类相关；如果您在管理远程计算机，则将要查找该系统上可用的类。对于本例而言，您需要使用 gwmi 的 –computer 参数连接远程计算机。例如，gwmi –namespace "root\cimv2" –list –computer ServerA 将列出名为 ServerA 的远程计算机上 root\cimv2 命名空间中的所有类。

远程 WMI
在 Windows PowerShell 的 1.0 版中，gwmi 可能是直接支持远程管理的唯一 cmdlet。这主要是由于远程控制构建在基础 WMI 体系结构中这一事实。而且，由于 Windows PowerShell 只是使用现有体系结构，因此它受制于该体系结构的安全功能。例如：
C:\> gwmi -namespace “root\cimv2” -computer
mediaserver -list
Get-WmiObject : Access is denied. (Exception
from HRESULT: 0x80070005 (E_ACCESSDENIED))
At line:1 char:5
+ gwmi <<<< -namespace “root\cimv2” -computer
mediaserver -list
PS C:\>
在本例中，我尝试连接到名为 MediaServer 的远程计算机（我对该计算机没有访问权限）。作为管理员，我应该有权使用此计算机的 WMI 服务，但我的本地工作站凭据似乎没有足够的权限。例如，我可能在一个不同的、不可信的域中登录，或者可能使用较少权限的帐户登录。幸运的是，gwmi 支持 –credential 参数，我可以通过该参数为我的 WMI 连接指定另外一组用户凭据。下面您将看到一个非常类似的示例：
gwmi win32_service –credential mydomain\administrator –computer mediaserver
我的凭据（更具体地说就是我的用户名）以 DOMAIN\Username 格式提供。
注意，您没有可以输入密码的地方，Windows PowerShell 将提示这一点。Windows PowerShell 有意不提供在命令行输入密码的方法，因为这样会让您将密码硬编码到脚本文件，这无疑是一个安全风险。不过，您可以通过其他方法使用此 –credential 参数，即通过提前创建一种名为 PSCredential 的凭据对象。此命令为 Get-Credential cmdlet：
$cred = get-credential mydomain\administrator
我在运行此代码时，系统仍然提示我输入匹配的密码。不过，这次创建的凭据对象存储在 $cred 变量中。如果我查看 $cred 的内容，我将看到名称而不是密码：
PS C:\> $cred

UserName
--------
mydomain\adminstrator
然后我可以随心所欲地重用该凭据对象：
gwmi win32_service –credential $cred –computer mediaserver
通过预定义一个可重用的凭据对象，这简化了到远程计算机的重复 WMI 连接。不过这毫无意义，与 VBScript 的支持方式不同，Get-WMIObject cmdlet 目前不支持指定身份验证级别（也称模拟）。有关详细信息，请参见 msdn2.microsoft.com/aa389290.aspx。

自发现
我最喜欢的内容之一就是 Windows PowerShell 不减少内容的难度。我向您介绍了 Windows PowerShell 如何只选择我查询的 Win32_Service 类的一组属性。不过，该 Shell 仍可以访问所有属性，甚至可以告诉您它们是什么。要执行此操作，只需将该对象（或多个对象）传输到 Get-Member cmdlet（或其别名 gm），如图 2 所示。
图 2 将一个对象传输到 Get-Member cmdlet 会告诉您可以访问哪些方法和属性
图 2 将一个对象传输到 Get-Member cmdlet 会告诉您可以访问哪些方法和属性
除了属性以外，该 Shell 还列出了可用的方法，这意味着我不必使用文档查看某个类的功能。我可以了解类本身提供了更改实例的配置、暂停服务和停止服务等任务的方法。
若要利用这些方法或显示其他属性，最容易的方法通常是将实例放入变量中：
$server = gwmi win32_operatingsystem
$server.reboot()
此示例将只检索 Win32_OperatingSystem 类的可用实例（该类在每台计算机上只有一个实例），并将其保存在 $server 变量中。然后，我将使用 $server 变量访问该实例的 Reboot 方法来重启计算机。使用该方法时一定要小心！

富查询语言
如果您在 VBScript 或其他技术下使用过 WMI，则可能习惯于使用 WQL（WMI 查询语言）编写的查询检索 WMI 类实例。其类似于 SQL 的语法使得检索特定实例（例如某个特定服务，而非某个给定类的所有实例）更加容易。幸运的是，gwmi 还可让您指定一个查询，如：
gwmi –query “select * from win32_service where name=’alerter’”
gwmi 的这一语法（在正式发布 Windows PowerShell 之前添加）非常有用，并使得迁移为其他用途开发的复杂 WMI 查询非常容易。而且，与往常一样，Windows PowerShell 将返回具有自己属性和方法的富对象，为您提供了访问 WMI 管理功能的完整权限。

WMI 的发展
将为 Windows 的未来版本继续开发 WMI，增加一些新类和功能。并继续将其添加到新的 Microsoft 产品中。尽管多数 Microsoft 产品尚未发布专门构建在 Windows PowerShell 上的版本，但其连接 WMI 的能力是使 Windows PowerShell 如今非常有用的最大好处之一。
我只是粗略地介绍了 WMI 的功能。但仍希望能借此激发您探索 Windows PowerShell 的兴趣，自己发现一些可用的功能。

Don Jones是 SAPIEN Technologies 的项目和服务总监，也是《Windows PowerShell:TFM》(SAPIEN Press) 一书的合著者。您可以通过其网站与 Don 联系，网址是 www.ScriptingAnswers.com。


 您好，脚本专家！: 百花齐放，百鸟争鸣，春天来了！
您好，脚本专家！
百花齐放，百鸟争鸣，春天来了！
Microsoft 脚本专家

哦，春天来了。 我们的心情也雀跃起来了。在过去的这个冬天，降雨、冰暴、暴风雪和暴风都创下了记录 － 有一次还将一棵大树刮倒，正好落在我们一位脚本专家的后院，距房子仅几英寸，把脚本狗也“吓”得藏到了躺椅后面 － 终于，春天来了，在夏季暖热的西北太平洋持续降雨来临之前，让我们尽情享受一下这清凉的细雨吧。
看着窗外的蒙蒙细雨，我们觉得此时很适合做一些“脚本”探险，深入研究一下 HTML 应用程序 (HTA)。我们说探险，并非虚言。在本文中我们不准备作任何类型的入门介绍；我们假定您已了解什么是 HTA 以及如何创建 HTA。如果您对此并不了解，请访问脚本中心的 HTA 开发人员中心。更具体地说，您需要阅读“HTA 初学者”部分的两篇文章。读完这两篇文章后，您就具备了所需的知识，可以回到这来了。
在本期专栏中，我们将阐述如何创建对话框。不仅如此，我们还将讨论如何在主 HTA 和对话框之间来回传递信息。是的，春天的新鲜气息确实让我们豪情万丈，不是吗？好好享受这个春天吧。
您可能知道，对话框有两种：模式对话框和无模式对话框。二者的差别是，当您打开模式对话框时，无法返回到从中打开该对话框的主窗口，除非关闭该对话框；而当您打开无模式对话框时，则可以在两个窗口之间来回切换。不过，无模式对话框会随主窗口一起关闭。
模式对话框和无模式对话框的创建过程是相同的。唯一不同的是，创建模式对话框时调用的是 ShowModalDialog 函数，而创建无模式对话框时则是 ShowModelessDialog 函数。这两个函数接受的参数也是相同的。首先让我们看一个简单的 HTA，它可以打开一个模式对话框（参见图 1）。
Figure 1 简单的初级对话框 (Close Figure 1)
<html>
<head>
<title>Modal Example</title>
<HTA:APPLICATION
  APPLICATIONNAME=”MainModal”>
</head>

<script language=”VBScript”>
Sub ShowDialog
 intReturn = _
    ShowModalDialog(“modaldialog.hta”)
 textbox.Value = intReturn
End Sub
</script>

<body>
<button onclick=”ShowDialog”>
 Show Dialog Box</button> <p>
<input type=”text” name=”textbox”>
</body>
</html>
此处我们创建了一个名为 Modal Example 的 HTA。我们在 HTA 的 <body> 区域添加了两个元素：一个标记为“Show Dialog Box”的按钮和一个名为“textbox”的文本框，如图 2 所示。当您单击该按钮时，会运行 ShowDialog 子例程。
图 2 实际的 HTA 模式对话框
图 2 实际的 HTA 模式对话框
ShowDialog 子例程非常简单。首先，调用 ShowModalDialog 函数，将要显示为模式对话框的 HTA 文件的名称作为参数传递，此处为 modaldialog.hta。（我们假定 modaldialog.hta 与该 HTA 位于同一个文件夹内。如果不是，需要在此填入完整的文件路径。）
我们还要捕获 ShowModalDialog 返回的值 (intReturn)。该值会显示在文本框中。您很快就会看到我们是如何获得此返回值的。需要注意的重要一点是，在调用 ShowModalDialog 后，要等待模式对话框关闭后才会返回值。这意味着必须先关闭对话框，才能将返回的值分配给文本框。
现在，让我们看看 modaldialog.hta，这是我们的调用 HTA 打开的对话框（参见图 3）。在此 HTA 中，我们已创建了两个元素：一个名为“listbox”的列表框和一个标记为“OK”的按钮，如图 4 所示。我们已向列表框中添加了四个项，分别标记为 Option 1、Option 2 等，并给每个项赋予了相应的值 1 至 4。单击 OK 按钮后，CloseWindow 子例程随即运行。
Figure 3 modaldialog.hta (Close Figure 3)
<html>
<head>
<title>Modal Dialog Box</title>
<HTA:APPLICATION
  APPLICATIONNAME=”ModalDialog”>
</head>

<script language=”VBScript”>
Sub CloseWindow
  window.returnValue = listbox.Value
  window.Close
End Sub
</script>

<body>
<select size=”3” name=”listbox”>
 <option value=”1”>Option 1</option>
 <option value=”2”>Option 2</option>
 <option value=”3”>Option 3</option>
 <option value=”4”>Option 4</option>
</select>
<p>
<input type=”button” id=”idBtn” value=”OK” onclick=”CloseWindow”>
</body>
</html>
图 4 表示模式对话框的 HTA
图 4 表示模式对话框的 HTA
CloseWindow 子例程非常简单。我们要做的第一件事是读取列表框中选定的项的值，然后将该值赋予 window.returnValue 属性。例如，如果用户选择 Option 2，则值 2 将赋予 window.returnValue。然后我们调用 window.Close 方法关闭该对话框。
这样我们就可以恢复对主 HTA 的控制。回想我们对 ShowModalDialog 所做的调用：
intReturn = _
  ShowModalDialog(“modaldialog.hta”)
赋予 intReturn 的返回值是我们在对话框 HTA 中赋予 window.returnValue 的值。因此，如果我们在对话框中选择 Option 2，这意味着将值 2 赋予 window.returnValue，则 intReturn 将等于 2，下列代码行会将该值显示给该文本框：
textbox.Value = intReturn
现在，我们已知道如何从对话框获取值，接下来，让我们看看如何将值传递给对话框。这次我们使用无模式对话框（参见图 5），但请记住，模式对话框和无模式对话框的工作方式相同，因此，这一过程也同样适用于模式对话框。
Figure 5 转为无模式对话框 (Close Figure 5)
<html>
<head>
<title>Modeless Example</title>
<HTA:APPLICATION
  APPLICATIONNAME=”ModelessMain”>
</head>

<script language=”VBScript”>
Sub ShowDialog
  intReturn = _
    window.ShowModelessDialog _
    (“modelessdialog.hta”, _
    lstServers.Value, _
    “dialogHeight:400px;dialogWidth:300px”)
End Sub
</script>

<body>
<select size=”1” name=”lstServers”>
 <option value=”server1”>Server1</option>
 <option value=”server2”>Server2</option>
 <option value=”server3”>Server3</option>
 <option value=”server4”>Server4</option>
</select>
<p>
<input type=”button” value=”Retrieve Processes” onclick=”ShowDialog”>
</body>
</html>
图 7 传递到无模式对话框的数据
图 7 传递到无模式对话框的数据
此次我们创建了一个名为“lstServers”的下拉列表框（之所以可以判断它为下拉列表，是因为其大小为 1）。另外还有一个标记为“Retrieve Processes”的按钮。单击该按钮后，ShowDialog 子例程随即运行。ShowDialog 子例程只有一行，即对 window.ShowModelessDialog 函数的调用，如下所示：
intReturn = _
  window.ShowModelessDialog _
  (“modelessdialog.hta”, _
  lstServers.Value, _
  “dialogHeight:400px;dialogWidth:300px”)
我们传递给此函数的第一个参数是要在该对话框中运行的 HTA 的名称，此处为 modelessdialog.hta。第二个参数是我们的列表框的 Value 属性。请记住，Value 属性中包含列表框内所选选项的值。因此，如果用户从列表框中选择 Server2，则 Value 将为 server2。我们要通过这个参数将信息传递给对话框。（如果要传递多个值，则可以将这些值放入此参数作为数组或集合来传递）。
马上我们就能看到该对话框是如何接收此参数中的值的。但首先请注意我们插入的第三个参数：
“dialogHeight:400px;dialogWidth:300px”
该参数包含一个字符串，用于指定对话框的高度和宽度。此处，我们指定高度为 400 像素 (400px)，宽度为 300 像素。如我们在模式对话框示例中所见到的，我们可以保留此参数为空，对话框将根据计算机的默认大小显示。
现在，让我们来看 modelessdialog.hta（在图 6 中），看看该对话框如何读入传递给它的值。
Figure 6 modelessdialog.hta (Close Figure 6)
<html>
<head>
<title>Modeless Dialog</title>
<HTA:APPLICATION
  APPLICATIONNAME=”Processes”>
</head>

<script language=”VBScript”>
Sub window_onLoad
  strComputer = window.dialogArguments
  Set objWMIService = GetObject(“winmgmts:” _
    & “{impersonationLevel=impersonate}!\\” _
    & strComputer & “\root\cimv2”)
  Set colProcesses = objWMIService.ExecQuery_
    (“Select * from Win32_Process”)

  strHTML = “<h1>” & strComputer & “</h1><p>”
  For Each objProcess in colProcesses
    strHTML = strHTML & objProcess.Name & _
       “<br>”
  Next

  DataArea.InnerHTML = strHTML
End Sub
</script>

<body>
<span id=”DataArea”></span>
</body>
</html>
在此 HTA 中，我们仅指定了一个元素 span，整个对话框就位于该元素中。在脚本部分，我们定义了一个 window_onLoad 子例程。该子例程会在 HTA 打开后（在此示例中，通过调用 ShowModelessDialog 来实现）立即运行。看看此子例程的第一行：
strComputer = window.dialogArguments
在这一行中，我们将属性 window.dialogArguments 的内容赋予变量 strComputer。您认为该属性中包含什么？嗯，随着春天的到来，您的思维也必定变得活跃了。说得没错，里面包含的是 ShowModelessDialog 调用的第二个参数中传递的值。如果主窗口中选择的是 Server2，则 strComputer 现在包含的值为 server2。
该子例程的其余代码只检索 strComputer 的所有进程并将这些进程显示在 span 区域中。有关此操作的结果，请参见图 7。
值得高兴的是，您现在有一整个夏天可以研究 HTA 对话框了。当然，除非您碰巧居住在马上就是冬天的南半球，如果您的冬天和我们这里的冬天一样经常停电的话，那可能会有点困难。

Microsoft 脚本专家服务于，或者干脆说受雇于 Microsoft。在不玩、不教或不看棒球（以及其他活动）的时候，他们维护 TechNet 脚本中心。您可以光临他们的网站 www.scriptingguys.com 了解更多信息。


 Exchange Queue &amp; A: OWA 超时、Cmdlet 疑难解答和更多内容
Exchange Queue & A
OWA 超时、Cmdlet 疑难解答和更多内容
KC Lemson and Nino Bilic

问：我们最近从 Exchange Server 2003 迁移到了 Exchange Server 2007。现在经常接到投诉，说受限用户在登录到 OWA 2007 时如果选择“此计算机是私人计算机”选项，Outlook® Web Access (OWA) 便会超时。用于验证私人计算机超时的相应 Exchange 命令行管理程序命令是什么？
答：请稍等片刻。 首先我会解释为什么私人计算机（与公用计算机相对）会有一个单独选项（参见图 1），然后再介绍这些选项的行为差异。 我的目的是使用户能够通知 Exchange 需要什么样的安全级别 - 例如，是在使用机场的公用网亭登录到 OWA，还是在使用家用计算机登录。Exchange 管理员可以选择区别对待这些会话类型。例如，管理员可以将经过身份验证的会话在公用计算机上的超时（比如在几分钟内）设置得比在私人计算机上的超时（最长可达三天）更快。管理员还可以根据用户的选择对其他设置进行不同的配置。例如，管理员可能会将对 SharePoint® 文档库和 Windows® 文件共享的访问权设置为只向私人登录开放。当然，这取决于指定权限选项的用户。如果管理员不信任用户做出的权限选择，他们可以为每个选项指定相同的超时值及其他配置选项。
图 1 公用和私人计算机会话类型允许使用不同的超时设置及其他配置选项
图 1 公用和私人计算机会话类型允许使用不同的超时设置及其他配置选项
这里讨论的选项在 Exchange 2003 中就已经存在了，而当时基于表单的身份验证也是首次引入 OWA。（历史注释：基于表单的身份验证的首次实现在某种程度上是由一位杰出的项目经理设计的。我不会公开她的身份，但我想告诉您她后来通过为《TechNet 杂志》的一个双月刊专栏撰稿而名利双收。）
此设置实际上是存储在注册表中的，但由于 Windows PowerShell™ 提供了一个用于更新注册表的接口，因此您可以使用 Exchange 命令行管理程序配置此设置。当用户在登录过程中选择私人计算机选项时，以下示例会将超时时间设置为 1440 分钟（也就是一天）：
set-ItemProperty ‘HKLM:\SYSTEM\CurrentControlSet\Services\
MSExchangeOWA’ -name TrustedClientTimeout
-value 1440 -type dword
既然此设置位于注册表中，那么如果需要，您当然可以使用 Regedit 自己更新此注册表项：
#include <standard disclaimer about mucking
   with the registry.h>
#include <musing from author about when as a
   company we will ever be able to stop making
   that standard disclaimer about mucking with
   the registry.h>
不管怎样，您都需要重新启动 IIS，以确保 OWA 启用新设置。为此，只需选择“开始”|“运行”，然后运行 iisreset /noforce。

问：我们鼓励使用完整 MAPI Outlook 客户端工作的每一个人将所有不太急需的项目都存档到个人文件夹 (.pst) 文件中。但是，当用户从家中登录到 Outlook Web Access 时，已存档项目却不可用。如何才能通过 OWA 界面使用这些 .pst 文件？
答：我很遗憾地告诉您，OWA 不支持对 .pst 文件的访问。OWA 始终都是一个仅限联机使用的客户端。为确保不在本地计算机上留下任何个人数据痕迹，我们做了大量工作 – 其中包括首先在 Exchange 2003 中推出的安全注销机制和 Exchange 2007 中的 WebReady 文档查看等功能，WebReady 文档查看可确保缓存的附件副本不会留在硬盘上。因此从 OWA 访问 .pst 文件与我们使之成为一个易于部署的仅限联机使用的客户端的初衷不符。
尽管如此，但总的来说，.pst 的使用也是我们希望讨论的一个有趣话题。去年秋天我们碰到了一个客户，该客户分配给其用户的邮箱配额约为 200MB，并且几乎每个用户都至少有一个（如果不是更多）.pst 文件。由于该组织的一项政策要求将消耗在擦除和更换用户计算机上的工作减至最少，因此所有用户都需要将其 .pst 文件存储在一个网络共享中。而该网络共享应由中央系统进行备份。
首先，从网络共享访问 .pst 文件时存在一些已知问题。正如 OWA 从一开始就被设计为仅限联机使用一样，.pst 文件从一开始就被设计为在本地存储。不管网络多么好，都会存在延迟等问题，而这都会导致数据远程存储（用户同时还需要访问这些数据）出现问题。
其次，该组织的邮箱配额有点小（必须得承认，我们奢侈地享受着大约 2GB 的企业邮箱），这是因为它不想将所有邮箱数据都放在 Exchange 中（否则接下来 Exchange 就要负责备份所有这些数据）。但是，用户将 .pst 文件中的数据存储在由中央系统备份的网络共享中，管理员要做的工作实际上并未减少。事实上，很可能会由于各种因素而增加很多工作，例如：没有跨多个 .pst 文件的单实例存储、与 .pst 文件问题（如忘记密码和通常的网络扁平化）相关的支持人员成本、病毒攻击后难以清除 .pst 文件中的消息、出现法律问题时难以发现 .pst 文件中的消息、维护不同备份系统的开销等等。
因此我们奉劝您仔细考虑您的配置决策所涉及的各种成本。您可能会发现这些成本过高，而另一个配置最终可能会成为一个更好的选择。

问：我的 Exchange 命令行管理程序命令出了问题。它不运行了。这是怎么回事？
答：我们无法回答这个问题，但可以告诉您，为了得到最好的帮助（无论向谁求助），您都应使用 Windows PowerShell 中称为 start-transcript 的内置 cmdlet 来记录您执行的命令以及得到的结果。然后将这些详细信息原封不动地粘贴到电子邮件消息、博客文章或论坛上的问题中。
打开 Exchange 命令行管理程序会话并键入 start-transcript，如图 2 所示。Exchange 命令行管理程序会自动开始将所有后续命令记录到一个类似如图 3 所示的文本文件中（不用担心，应用程序会告诉您该文本文件的位置）。若要停止记录，只需键入 stop-transcript。
图 2 使用 start-transcript cmdlet 记录您所使用的命令及其结果
图 2 使用 start-transcript cmdlet 记录您所使用的命令及其结果
图 3 Windows PowerShell 保存您所使用的命令的记录，并将其存储在一个 .txt 文件中
图 3 Windows PowerShell 保存您所使用的命令的记录，并将其存储在一个 .txt 文件中
无论是谁帮您解决问题，您所使用的命令及所返回结果的完整列表都会提供巨大帮助。但在与您不认识或不信任的人共享该日志之前，一定要进行检查，确定其中是否包含可能已经返回的机密数据或敏感数据。

问：我看到 Exchange 2007 安装程序在根域中创建了一个新的组织单位 (OU)。其名称为 Microsoft Exchange 安全组，其中包含五个新的 Exchange 2007 安全组。能否将这些组移至其他 OU？能否移至其他域？
答：此问题涉及在 Active Directory 准备阶段在根域中创建的五个通用安全组 (USG)。这些组包括：
  • Exchange Organization Administrators
  • Exchange Recipient Administrators
  • Exchange View-Only Administrators
  • Exchange Servers
  • ExchangeLegacyInterop
在 Exchange 2000 和 Exchange 2003 中，（在 Exchange Domain Servers 和 Exchange Enterprise Servers 中）移动默认安全组的能力是有限的。更清楚地说就是您可以移动它们，但会中断正在进行的事务。（有关此问题的详细信息，请查看 support.microsoft.com/kb/260914。）因此这种能力确实非常有限。
在 Exchange 2007 中，情况就不同了。默认的五个组可以移动。您可以将它们移动到相同域的不同 OU 中，或者全部移动到其他域。
如果您“丢失”这五个组，而不知道将它们移到了何处（即哪个 OU 或域），您可以随时检查下面容器上的 otherWellKnownObjects 属性的值：
CN=MicrosoftExchange,CN=Services,
CN=Configuration,DC=<DomainName>,DC=com
当组被移动时，此属性上相应的位置信息也会随之更新，这样您就可以随时了解组的位置了。太巧妙了！

问：我在我的域中发现了一个称为“Exchange Install Domain Servers”的全局安全组。它是干什么用的？
答：您肯定是在监视您的 Active Directory®。实际上，安装了 Exchange 2007 服务器的每个域中都会有一个称为 Exchange Install Domain Servers 的组。该组是在 Microsoft Exchange 系统对象 (MESO) OU 中创建的。如果您检查此组，您会看到它正在成为根域的 Exchange Servers 组的一个成员，Exchange Servers 组是一个通用安全组。
简明扼要地说，Exchange Install Domain Servers 是在某一子域中运行 Exchange 2007 安装程序时用于处理可能的 Active Directory 长复制循环的组。例如，假设您有一个名为 Root 的根域、一个名为 Child 的子域以及 Child 子域的一个名为 Grandchild 的子域。（我们知道，此命名方案是很逼真的！您一定能够猜得出吧？）
若要在此组织中开始安装 Exchange 2007，首先必须扩展该方案并准备您的 Root 域。这将创建我们在上一个回答中讨论的五个原始 USG。
接下来，假设您需要在 Grandchild 域中运行安装程序。为了能够在本地域中启动 Exchange 2007 服务，安装程序会将 Exchange 2007 计算机的一个计算机帐户放入 Root 域的 Exchange Servers 组中。但由于您现在是在 Grandchild 域中，Exchange Servers 组的成员身份复制可能需要一点时间。
Exchange Servers 是一个通用组，其成员身份复制是在整个林中进行的。由于存在潜在的复制延迟，Grandchild 域中的安装程序可能无法启动服务，因为安装完成之前不会复制权限。这就是在某个域中首次安装 Exchange 2007 服务器时，它会在本地域中创建 Exchange Install Domain Servers 组的原因。
Exchange 计算机帐户将会成为该组的一个成员（作为安装的一部分）。该组的成员身份为服务提供了足够权限以便在安装结束时进行启动（即使尚未从 Root 域复制 Exchange Servers 组的成员身份）。请注意，本地域复制通常比域间复制要快。

问：Exchange 2007 文档讲到运行安装程序时应使用 /PrepareLegacyExchangePermissions 开关（即使在针对 Exchange 2007 扩展架构之前）。这是为什么？（另外，您是否曾为此开关用过更长的名称？）
答：得知您在运行安装程序前阅读此文档我们感到很高兴。您觉得此文档如何？
/PrepareLegacyExchangePermissions（或缩写为 /pl）是一个开关，明确地说，它为 Exchange 2000 和 Exchange 2003 收件人更新服务 (RUSes) 提供写入 Exchange 信息属性集和 Exchange 个人信息属性集的权限。在 Exchange 2007 架构扩展过程中，有些属性（如 Proxy Addresses）会从 Active Directory 公共信息属性集移动到 Exchange 信息属性集。默认情况下，Exchange 2000 和 Exchange 2003 RUSes 没有写入 Exchange 信息属性集的权限。实际上，这意味着如果先运行 Exchange 2007 架构扩展，则会中断 Exchange 2000 和 Exchange 2003 RUSes，因为它们将不能标记任何新的收件人！（要阅读有关这些属性集的详细信息，请转到我们的博客 msexchangeteam.com。）
因此，扩展 Exchange 2007 架构之前运行 /pl 开关非常重要。您还应确保将此更改复制到具有 Exchange 2000 或 Exchange 2003 收件人的所有域（因此这些域存在 RUSes）中。如果稍后向林中添加新域，并且需要将 Exchange 2000 或 Exchange 2003 RUSes 放入这些域中，则也应在这些域中运行 /pl 开关。
这样的话，在首次运行 /pl 开关时，如果使用具有 Enterprise Admin 权限的帐户运行此开关，情况会简单得多。然后，根域的安装程序会识别哪些域需要运行 /pl，并会在所有这些域上运行 /pl 开关。如果不使用 Enterprise Admin 帐户，则必须使用 Domain Admin 对每个域单独运行 /pl 开关。所幸的是，Exchange 2007 文档列出了所有权限要求。
最后，您问我们是否曾为此开关用过更长的名称。比如连续重复三遍 /PrepareLegacyExchangePermissions：
PrepareLegacyExchangePermissions
PrepareLegacyExchangePermissions
PrepareLegacyExchangePermissions
我们想过使用 /Prepare-LegacyExchangePermissionsWOWThisIsaReallyLongname，但随后我们还是选择了更短和更友好的 /PrepareLegacyExchangePermissions。
好了，我们就用它了。但您还可以使用更短的 /pl。就是它了 - 我们保证！

KC Lemson是 Exchange Server 的用户体验经理。她在空闲时间通过电子邮件来了解应如何对为孩子准备的大学费用进行投资。
Nino Bilic是一名 Exchange Server 技术主管，正忙于监视在一个普通工作日内有多少 Halo 游戏正在运行。


 安全观察: 网络访问保护
安全观察
网络访问保护
John Morello
本专栏中有关 Windows Server“Longhorn”的预发布信息可能会有所变动。

目前，各种规模的组织都面临的最大安全威胁之一就是网络外围背后的恶意设备。任何组织，不论其对来自 Internet 的外部威胁防御得多么严密，都会因善意的员工在不知情的情况下带入
蠕虫或木马等恶意软件而在安全性方面面临风险。这种威胁在中小型组织的 IT 环境中尤其如此，因为其员工可能使用同一台便携式计算机处理个人事务和工作任务，并且对他们而言，网络访问控制技术也经常因过于昂贵和复杂而无法部署。不过通常由于停机而付出高昂代价的也正是这些组织。由此可见防御这些威胁是至关重要的。
利用 Microsoft 的网络访问保护 (NAP) 技术，各种规模的组织都能在计算机连接到网络时前瞻性地检查其运行状况，以确保计算机在整个连接期间始终运转正常。NAP 为组织提供了一种基于策略的灵活的体系结构，可防止员工、供应商和访问者有意或无意地将不符合安全策略的计算机连接到组织的网络。NAP 主要围绕四大基本核心构建而成：策略验证、隔离、补救和持续的遵从性。

NAP 概述
NAP 提供的第一个核心服务是策略验证。策略验证是指 NAP 根据管理员定义的一组规则对系统进行评估并划定系统运行状况的过程。
IT 管理员指定一组策略元素，NAP 在计算机尝试连接到网络时会使用这些元素进行对比。符合这些策略元素的计算机被视为状态良好的计算机，而不符合其中一项或多项核查标准（由管理员指定）的计算机则被认为是状态不良的计算机。这些策略可以检查计算机是否安装有防病毒软件和防间谍软件、主机防火墙是否处于活动状态、是否缺少某个安全更新，等等。此外，由于 NAP 是可扩展的，因此独立软件供应商可针对 NAP 开发自己的插件，以针对应用程序进行检查。
NAP 提供的另一项核心服务是网络连接限制。根据管理员定义的策略的不同，NAP 可以将计算机的网络连接设置为各种状态。例如，如果一台计算机因缺少关键的安全更新而被视为状态不良，则 NAP 可以将该计算机置于隔离网络中，使其与网络中其他计算机隔绝，直至恢复健康为止。如果没有 NAP，状态不良的客户端也可以不受限制地访问组织的网络。一旦恶意软件能够通过那些本该由更新程序修补的漏洞危害该计算机，它就能够不断试图将自身的感染传播给网络中的其他计算机。图 1 所示使您对该体系结构有一个大致的了解。
图 1 常见的 NAP 体系结构
图 1 常见的 NAP 体系结构
不过，仅限制连接并非处理那些状态不良的计算机的有效方法（毕竟，您的用户还要工作）。为此，NAP 提供了补救服务，被隔离的计算机无需管理员干预即可纠正影响运行状态的问题。在上述示例中，受限的网络只允许状态不良的计算机访问安装缺失更新程序必需的特定网络资源，例如组织的 Windows Server® Update Services (WSUS) 计算机。也就是说，有了 NAP，状态不良的计算机只能访问那些可使其运行正常的网络资源，在其恢复健康前，不能向网络中的其他计算机发送任何通信。
NAP 的最后一个核心服务是持续的遵从性，即强制计算机在与网络保持连接期间，而不仅仅在初始连接时，始终符合这些可保持状态良好的策略。通过我们的示例，设想一下计算机对自身进行更新并恢复良好状态（因此可获得不受限的网络访问）后会怎么样。如果该计算机之后与策略不相符合，例如禁用了 Windows 防火墙，则 NAP 将自动将该计算机重新隔离。NAP 还允许管理员配置自动补救，无需用户干预即可自动更正违规状态，甚至在初始连接建立很久之后仍可执行这一操作。
NAP 可以采取多种不同的方法控制网络访问。采用托管网络交换机的组织可以利用 802.1X 在网络硬件层提供基于端口的访问控制。NAP 还能够利用基于 Ipsec 的强制技术，通过 Ipsec 关联建立安全网络并将其覆在物理网络之上。利用基于 Ipsec 的强制技术，NAP 可动态地创建和删除 IPsec 引擎所使用的证书，以此来控制对安全区域的访问。最后，NAP 可以提供基于 DHCP 的强制技术。在这种情况下，DHCP 服务器为运行状态不良的客户端提供来自受限池的 IP 租约。这些租约使用单独的 DNS 后缀和 IP 路由来控制受限客户端可以访问哪些资源。
NAP 服务器组件基于下一版本的 Windows Server（代号“Longhorn”）构建，更具体地说，是内置在新的网络策略服务器 (NPS) 中，NPS 是 Internet 身份验证服务 (ISA) 的替代品，功能得到了极大的增强。组织如果利用基于 802.1X 的强制技术，其网络硬件必须支持 802.1X 身份验证和动态 VLAN 功能（“NAP 资源”侧栏中的 NAP 合作伙伴站点提供了有关特定硬件供应商的详细信息）。要利用基于 DHCP 的强制技术，需要一个与 Windows Server“Longhorn”提供的类似的支持 NAP 的 DHCP 服务。在客户端上，Windows Vista™ 中内置了 NAP 支持。NAP 支持也可以作为加载项添加到 Windows® XP 中，随之添加的还有一个新的 802.1X 申请者 (supplicant)，它将在 Windows XP 上支持 802.1X 强制技术。
此外，NAP 还集成在 Windows 安全中心和第三方的运行状态代理内，用于报告运行状态的信息。因此，NAP 能够根据安全中心公布的数据作出策略验证决策。
NAP 是一个功能非常强大的企业级策略管理解决方案，因此，本文篇幅有限，不可能涵盖其全部功能和部署策略。本文主要将重点放在中小型组织的部署上，因为在这些组织中，IT 员工的时间已经不够分配了，因此可以对 NAP 部署进行精简和优化，以便更快地实现部署所要求获得的投资回报。但是文中很多讲解性的内容和通用准则也同样适用于任何规模的组织的 NAP 设计。但要注意的是，我所列举的示例方法并非逐步设置指南，而是大体上概述了成功部署基于 DHCP 的 NAP 应关注的关键领域。有关详细的设置指南，请参阅“NAP 资源”侧栏提供的链接。

Contoso 的问题包袱
为了更清楚地了解 NAP 如何解决中小型组织的独特需求，我们将以 Contoso 公司为例加以说明。Contoso 是一家假想的中型组织，有三个主要办事处，共有 250 台计算机。该公司的工作人员实现了很高的移动性，许多用户都从远程的客户所在地远距离地与主要办事处进行通信或连接回主要办事处。因此，该公司的计算机中有一半是便携式计算机和 Tablet PC。与许多组织一样，随着工作人员移动性的增强，Contoso 也面临着更加严峻的安全性挑战。某些使用移动数据终端的用户从客户那里或家庭办公室染上了恶意软件，然后将受感染的计算机又连接到 Contoso 的内部网络中。
Contoso 也曾努力采取过多种措施来确保这些远程计算机保持最新状态。但有的用户经常要在客户处工作很久才会回到 Contoso 的办事处。在这些情况下，他们计算机经常会数月不进行安全更新，这增加了 Contoso 网络中其他计算机面临的整体风险。Contoso 需要一个解决方案来确保所有连接到公司网络的计算机（不论是远程的还是本地的）都是安全的、状态良好的。
NAP 将如何帮助 Contoso 实现这一目标呢？请回顾一下 NAP 的主要核心服务。借助策略验证，NAP 可以对所有连接到 Contoso 网络的计算机的运行状态进行检查。策略验证可以确定计算机是否具有最新的防病毒签名，是否已完全安装了所有安全更新修补程序。当 NAP 策略验证例程确定一台计算机状态不良时，NAP 可以对该主机的网络连接进行限制。这样就确保了在异地使用并感染恶意软件的计算机无法将恶意软件传播给网络中的其他计算机。NAP 将限制状态不良的计算机的连接，使其只能访问由 Contoso 的 IT 管理员定义的补救资源。例如，状态不良的计算机可以访问 Contoso WSUS 服务器和承载防病毒签名的服务器。最后，NAP 可以确保计算机在恢复正常后始终保持良好状态。在这个示例中，如果远程办公人员通过 VPN 使用状态不良的主机，并且该用户关闭了主机防火墙，则 NAP 会自动对这一问题进行补救。只要一禁用防火墙，NAP 体系结构就会立即将该计算机隔离，重新启用防火墙，重新评估该计算机的运行状态，在确定该计算机恢复良好状态后，再将其放回不受限的网络中。NAP 的四项核心服务直接满足了 Contoso 对动态移动的计算环境的安全方面的需求。

NAP 设计
对许多中小型组织而言，实施基于 DHCP 的 NAP 强制技术是最快、最简单的可选方案。这是因为 DHCP 强制技术不需要对网络进行其他更改，而且除 DHCP 和 NPS 之外，不需要其他服务。尽管 IPsec 和 802.1X 强制方案更为灵活，但它们都需要在网络中进行额外更改并部署新的服务。对于较为简单的环境，使用 DHCP 既可享受 NAP 提供的大多数好处，同时实现成本也低得多，持续运营费用也少一些。
在 Contoso 的环境中，围绕一台运行 Windows Server“Longhorn”的计算机进行 NAP 部署。由于 NAP 需要 Windows Server“Longhorn”NPS，因此不能在以前的 Windows Server 版本上部署 NAP。NAP 的基于 DHCP 的强制也需要 Windows Server“Longhorn”DHCP 服务器。如果要整合这些服务，Contoso 可以将 NPS 和 DHCP 部署在同一台服务器上，二者可以相安无事，和谐共存。这样，Contoso 的基本 NAP 服务器体系结构就变得非常简单：仅需一台装有 Windows Server“Longhorn”的计算机，同时运行策略组件和强制组件。
在客户端，Contoso 运行 Windows Vista 的计算机已经具备支持 NAP 所需的能力。对运行 Windows Vista 的计算机而言，唯一要对客户端做出的更改就是启用 NAP 功能，这可通过组策略来实现。而对于运行 Windows XP 的计算机，则必须单独安装 NAP 客户端软件包。默认情况下，已加入域的 Windows XP 计算机的 Windows 安全中心功能是处于禁用状态的。如果 NAP 策略需要使用来自安全中心的状态信息来评估计算机的运行状态，则必须运行安全中心，否则 NAP 无法正常运行。因此，对于 Contoso 公司内运行 Windows XP 的计算机来说，管理员已通过组策略启用了安全中心。除了这些更改外，客户端无需再进行其他更改即可支持 NAP。

Contoso 的 NAP 部署
在 Contoso 完成前面所述的必要的组策略更改之后，下一个 NAP 部署步骤是安装 Windows Server“Longhorn”。所有 Windows Server“Longhorn”版本都包括必需的 NAP 组件，因此，Contoso 可以使用任何符合需求的版本。安装完毕后，IT 管理员要使用服务器管理器工具向计算机添加新的角色。对于 Contoso 使用的基于 DHCP 的强制，所需的角色为网络访问服务和 DHCP 服务器。添加角色向导将帮助管理员处理所有依赖关系并加入服务器可能需要的任何其他功能。添加完角色后，Contoso 即可开始配置 NAP 了。
Contoso 的管理员将使用服务器管理器工具访问 Microsoft 管理控制台 (MMC) 的 DHCP 管理单元，并添加新的作用域。配置 Windows Server“Longhorn”DHCP 服务器将导致它所服务的 IP 段上现有的 DHCP 服务全部被替换。根据 Contoso 的网络情况创建好该作用域并在其中填充了正确的选项后，就必须对其启用 NAP。这一操作可在作用域属性的“网络访问保护”选项卡上进行（参见图 2）。
图 2 启用 NAP
图 2 启用 NAP
NAP 通过新的 NAP 用户类作用域选项使计算机在同一作用域内的受限和不受限网络访问之间切换。在向状态不良的客户端提供租约时，会使用这组特殊的作用域选项（包括 DNS 服务器、默认的 DNS 后缀，等等）。例如，提供给状态良好的客户端的默认 DNS 后缀为“contoso.com”，而提供给状态不良的客户端的后缀为“restricted.contoso.com”，如图 3 中所示。配置好 DHCP 作用域选项后，即可设置网络策略服务器并创建规则了。
图 3 受限访问
图 3 受限访问
NPS 策略由四个主要组件构成。系统健康验证器（System Health Validators，SHV）定义了评估计算机运行状态需要执行哪些检查。更新服务器组列出了状态不良的计算机可以访问的系统（例如 WSUS），通过访问这些系统，状态不良的计算机可以恢复正常状态。系统健康验证器模板组件用于定义实际的运行状况。例如，Contoso 可以认为通过了 Windows Security SHV 检验的计算机是“遵从策略”的，但客户端仍有可能无法通过其防病毒供应商提供的另一项 SHV 检查。最后，这些组件将组成一组网络策略，其中包括了逻辑规则，借此根据计算机运行状况确定如何对其进行处理。
系统健康验证器列出了各种项，NAP 代理会对这些项进行检查并向 NPS 报告计算机运行状况。默认的 NAP 部署包括 Windows SHV（加入到 Windows 安全中心），它可允许 NAP 检查安全中心报告的所有安全组件的状况。这其中包括防火墙、防病毒组件、自动更新组件和防间谍软件组件。
我们之前说过，NAP 是可以扩展的，允许第三方创建属于自己的 SHV，以便对单个组件进行更为详细的检查（有关详细信息，请参阅 microsoft.com/windowsserver2003/partners/nappartners.mspx）。例如，Windows Security SHV 允许 NAP 检查防病毒软件是否已启用并处于最新状态。不过，Windows Security SHV 并不能执行有关防病毒应用程序的更详细的检查，例如计算机的扫描频率或应用程序特定的其他选项。不过，防病毒软件供应商可以创建自己的 SHV，与默认的 Windows SHV 相比，该 SHV 能够更深入应用程序，提供更多应用程序特有的检查。此 SHV 将与 Windows SHV 和其他可能存在的 SHV 密切协作；一个 NAP 部署有时会同时使用多个 SHV（参见图 4）。
图 4 Windows 安全 SHV
图 4 Windows 安全 SHV
更新服务器组用于指定状态不良的计算机能够访问哪些资源。这些组通常包括 WSUS 或 Systems Management Server (SMS) 服务器，以及防病毒更新服务器。至关重要的是，不仅要包括服务器本身，还要包括客户端查找服务器所用的名称解析服务器。由于 Contoso 的客户端经由组策略配置，使用称为 wsus.contoso.com 的服务器进行自动更新，因此更新服务器组不仅必须包括该 WSUS 服务器的 IP 地址，还要包括 DNS 服务器的 IP 地址，因为客户端要通过它将完全限定的域名 (FQDN) 转换成数字 IP 地址。如果无权访问这些名称解析资源（可能为 DNS 和 WINS，具体取决于客户端的配置方式），客户端将无法解析补救资源的 IP 地址，也就无法访问它们。图 5 所示为示例的 DNS 和 IP 设置。
图 5 DNS 名称和 IP 地址
图 5 DNS 名称和 IP 地址
系统健康验证器模板用于定义状态良好的计算机需要满足哪些条件。验证模板会获取 SHV 检查的结果，并根据计算机是否通过其中的一项或多项检查来确定其运行状态是否良好（参见图 6）。
图 6 遵从性检查
图 6 遵从性检查
在 Contoso 的环境中（象许多中小型组织的部署一样），只定义了两种状态。通过所有 SHV 检查的计算机称为状态良好的计算机。未能通过其中一项或多项检查的计算机则称为违规的计算机。如果需要，组织可以选择实施更为复杂的逻辑（例如，根据角色、所在部门、地理位置等为用户创建不同的遵从规则），但要注意，这样做可能会增加识别和排查问题的难度，而且更为耗时。
所有这些组件都通过网络策略组合在一起。网络策略由管理员定义，用于指导 NPS 如何根据计算机的运行状态处理计算机。NPS 会从上到下评估这些策略（如 NPS UI 中所示），一旦计算机与策略规则相符，处理将立即停止。
由于 Contoso 网络的目标是简单，因此只需要少量策略。首先是 Compliant-FullAccess（合规 — 完全访问）策略。此策略规定通过所有 SHV 检查的计算机可以获得不受限制的网络访问权限。具体地说，当计算机经过运行状况评估并通过所有检查时，NPS 会指示 DHCP 服务器为该计算机提供一个作用域选项为“正常”的 IP 租约。此 Compliant-FullAccess 策略通常应该列在处理顺序的首位，因为大多数计算机在接受这项检查时应该都是符合规则的。将此策略列在首位可减少 NPS 的处理工作量和时间。
下一个要用到的策略是 Noncompliant-Restricted（违规 — 受限访问）。在 Contoso 环境中，此策略对应任何未通过一项或多项 SHV 检查（因此符合违规系统健康验证模板）的计算机。如果有计算机与此策略相符，则 NPS 会指示 DHCP 服务器为该客户端提供一个具有特殊 NAP“受限”作用域选项的 IP 租约。该地址仅允许违规计算机访问 Contoso 的更新服务器组中定义的资源。
第三个要用到的策略针对后台兼容性。我们说过，默认情况下，Windows XP 和更高版本的操作系统都提供 NAP 支持（不过，独立软件供应商也许会开发适用于更低的 Windows 版本和非 Windows 操作系统的 NAP 客户端）。如果 Contoso 的生产环境中仍存在 Windows 2000，则可以创建一条规则（在我们的示例中为 Downlevel-Full-Access），允许为不识别 NAP 的计算机授予正常的网络访问权限（DHCP 服务器默认的作用域选项）。此策略应该最后评估，并且只有当下层计算机需要网络访问时才需要创建和启用（参见图 7）。
图 7 下层计算机的访问权限设置
图 7 下层计算机的访问权限设置
如果 Contoso 的网络中存在目前不支持、且以后也不会支持 NAP 的资源（如打印机或其他硬件），我们该怎么办？而且，如果 Contoso 的计算机虽然支持 NAP，但却想永久或暂时免于策略检查，我们又将如何解决？有一种简单的方法可用于将这些计算机设为例外，即求助于 MAC 地址。为了让这些计算机绕过 NAP 检查，Contoso 管理员可以创建一个新的策略（按 MAC 设为例外），这样即可赋予它们完全的网络访问权限。此策略使用条件语句，Calling Station ID 的 RADIUS 客户端属性要与需要绕过 NAP 检查的那些设备的 MAC 地址相匹配。当计算机符合此策略语句时，NPS 会指示 DHCP 提供一个具有“正常”作用域选项的租约。此策略应该列在评估顺序的首位，以便减少 NPS 的总体处理时间和工作量。符合此策略的计算机不需要再进行任何 SHV 评估，因此 NPS 无需对其进行循环检查（参见图 8）。
图 8 忽略某些计算机
图 8 忽略某些计算机
这些策略结合在一起可确保 Contoso 的 NPS 迅速准确地评估连接到网络的计算机。在需要时，它们还能为下层计算机和设备提供免检，或在支持 NAP 的设备需要暂时绕过检查时，提供免检。

总结
NAP 中囊括了广泛的技术，需要进行全面的规划和测试，尤其是在较复杂的应用方案中。尽管我重点介绍的应用方案并不复杂，但 NAP 网站可提供更为详细的指导准则，所有规模的部署皆可参考。该网站还包括基于 802.1X 和 Ipsec 的强制技术的规划帮助信息，与基于 DHCP 的强制相比，这些技术通常更适合企业的需求。
NAP 为评估连接到网络的计算机的运行状况提供了一个强有力的可扩展平台。对中小型组织而言，基于 DHCP 的强制具有诸多好处，而且实现和管理的成本较低。NAP 是使用 Windows Server“Longhorn”所获得的一个主要好处，它能帮助您的组织增强安全性，改善规则遵从状况。
NAP 资源
  • 网络访问保护
  • 在测试实验室中设置动态主机配置协议强制来实现网络访问保护
  • 网络访问保护合作伙伴
  • “网络访问保护简介”白皮书网络广播

John Morello在 Microsoft 工作的六年时间里担任过各种角色。身为高级顾问，他曾为财富 100 强企业和联邦军民客户设计过多种安全解决方案。目前他是 Windows Server 小组的高级项目经理，主要研究 Anywhere Access 技术。


 桌面文件: 再探 Windows 部署服务
桌面文件
再探 Windows 部署服务
Wes Miller

我最近的几期专栏都在讨论与 Windows Vista 以及下一版本的 Windows Server（代号为“Longhorn”）相关的部署技术。软件始终都是发展变化的，因此我今天要简单介绍与 Windows 部署服务 (WDS) 有关的更新功能，这些功能将在
Windows Server®“Longhorn”中提供。我还从读者那里以及过去几个月我所参与的讨论中收集了不少问题，并将借此专栏之机回答其中一些与 ImageX、WDS 和 Windows® PE 有关的问题。

新增功能和增强功能
在 WDS 构想之初，人们希望在 Windows Server 2003 中作为加载项提供的功能会与以后要在 Windows Server“Longhorn”中提供的功能基本上相同。然而，Windows Server“Longhorn”的 WDS 开发团队一直在刻苦研究三个关键的新功能，这三项新功能预计将是即将推出的服务器平台上的 WDS 所独有的。
这三项新功能分别为多播部署 (multicast deployment)、增强的 TFTP 下载性能和针对 x64 系统的可扩展固件接口 (EFI) 网络引导支持。这些强大的功能可以使 WDS 用户和管理员受益匪浅，因此我们将一一进行讨论，让大家对这些新特性有所了解。不过请注意：Windows Server 2003 的 WDS 的任一未来版本并不预定包含这些功能。

多播功能
远在我加入 Windows 团队以前，多播功能就是用户在运用远程安装服务 (RIS)，甚至是进行一般 Windows 部署时讨论最多和要求最为强烈的功能之一。用过第三方部署技术的客户都知道多播部署的强大优势。Microsoft 内部的几种特定于方案的部署技术 － 特别是自动部署服务 (ADS) － 都实现了多播功能，但却没有一个针对 OEM 和企业部署，而且每当我与 OEM 或企业客户就部署展开探讨时，他们经常要求提供多播功能。
多播的一个主要优点是允许多台计算机同时接收信息。也就是说，发送方（这里指 WDS 服务器）只发送一次要传送的信息。随后各个客户端必须从头到尾侦听整个通信过程，以接收信息。由于所有客户端都在同时明确地侦听一个网络地址，因此具有双重好处：一是由于减轻了执行同一任务的多个客户端对网络造成的拥塞，因此提高了部署速度；二是由于每个客户端都在侦听单个流，网络饱和度也得到了降低。
但多播自身的基础架构一直以来也是它的不利之处。设想一下我们许多人在孩童时代玩过的“传话”游戏。您或许还能回忆起游戏的玩法：
  1. 您首先告诉旁边某人一句短语。
  2. 这个人听到了短语。
  3. 他继续向下一个人重复这句短语。
  4. 以此类推，在场的所有人都一一重复这一过程。
由此可见多播的固有问题是：要将整个短语告诉四个人，这些人必须都在屋子里并同时听您说短语。如果这时又进来一个人，并且不知道赶紧听其他人在说什么，您就必须向所有人重复整个短语。
多播的工作原理与传话游戏基本相同。您首先通过电缆发送一个二进制文件映像（通常是基于扇区的磁盘映像）。在首次广播映像时，如果需要接收映像的客户端尚未作好准备，它们通常必须排队等待。更麻烦的是，如果客户端由于网络出现故障或性能不佳而丢失过多数据，这些遇到问题的客户端或者需要完全退出通信队列（因为它们已无法确保能够收到完整的磁盘映像），或者会连累整个组必须放慢速度来顺应它们的需要。因此在为同时部署数百个系统的方案设计多播系统时，有一个问题就需要多加注意，那就是既要确保所有客户端同时启动，又要保证单个客户端速度的迟缓不会影响到其他客户端。
而 WDS 团队通过提供一个全新的多播引擎彻底改变了这种局面。该引擎利用基于文件的 Windows 映像格式 (WIM) 基础架构提供了一些非常独特的功能。虽然借助大多数第三方多播软件也可以执行相同的分步多播方案，但相比之下，WDS 多播解决方案提供的功能要强大得多。
第一，在传输期间，客户端计算机可随时加入。多播广播是一种文件流的“轮询”广播，它可以持续广播直至每台客户端计算机的需要都得到满足。因此，客户端何时进入联机状态都没有关系。它们会侦听 WDS 服务器，而服务器在完成映像文件广播后会再次从头开始广播。客户端如果错过了某个文件，只要继续侦听，直到该文件再次出现即可（就像旋转的木马）。
第二，协议是全新的，并提供了拥塞控制和流控制，这意味着它能很好地应用于实际网络环境，并且不会干扰现有网络通信。而通常网络管理员都担心这样一个问题，即在打开多播功能时，原本是想提高通信效率，但令人啼笑皆非的是，网络中竟因此充斥了巨大的流量（某些多播解决方案已经证实了这一点）。
第三，该解决方案是为了脱离对 WDS 和 Active Directory® 的依赖而设计的。这意味着要利用该解决方案，既不需要 Active Directory，也无需实施 WDS。ImageX 多播可以独立进行，适合许多方案使用。该多播客户端是一个命令行应用程序，可在 Windows Server“Longhorn”（及其关联的 Windows PE 版本）、Windows Vista™、Windows XP Service Pack 2 (SP2) 或最近发布的 Windows Server 2003 SP2 中运行。
WDS MMC 和 WDSUtil 应用程序中新增了一些用于设置和配置多播功能的管理任务。此外，WDS 客户端的用户界面还作出了改动，可以指示多播功能是否处于使用状态。
WDS 管理工具使管理员能够监控对客户端的实时传输进度（包括从传输中删除客户端）。管理工具还提供了全面的日志记录和报告功能，这意味着管理员现在有办法对安装进行记录 － 而这正是过去的 RIS 迫切需要的一项功能。
Windows Server“Longhorn”的 WDS 将提供多播功能，这是最近我所听到的比较令人兴奋的消息之一。团队能够以一种非常适合 OEM 和企业使用者的方式实现这一客户经常要求的功能，这确实是一个振奋人心的好消息。

增强的 TFTP 下载性能
普通文件传输协议 (TFTP) 是预引导执行环境 (PXE) 的一个关键组成部分，该环境本身是 RIS 和现在的 WDS 的基础。之所以选择 TFTP 并不是因为其网络效率高或比较稳定，而主要是因为它是一个非常小的协议（无状态、不安全且基于 UDP），能够封装在引导 ROM 中，而这正是系统从网络进行 PXE 引导所必需的。
Windows Server“Longhorn”的 TFTP Daemon (TFTPD) 已经过彻底重写，TFTP 下载性能有望显著改善（这是功能上的一个主要增强，所有 WDS 部署都基于一个从 RAM 映像引导的 Windows PE）。对于那些希望在 Windows Server 2003 平台上能够更高效地从 RIS 或 WDS 服务器下载 Windows PE 的用户来说，这是一个好消息。
随着 PC 领域开始从普遍应用的 BIOS（当今 x86 PC 的基础）向 EFI 迁移，Microsoft 已准备好将 WDS 应用于新推出的 x64 服务器系统，使用 EFI 来代替 BIOS 进行引导。其所包含的功能将使 x64 客户端系统能够从 WDS 服务器进行 PXE 引导。

问题
介绍了 WDS 更新，接下来我将利用本专栏的余下部分回答一些问题，其中包括我在电子邮件中收到的、最近网上讨论热烈的以及我认为读者可能普遍感兴趣的问题。

问：能否在无 DHCP 环境中使用 WDS？我的网络不支持 DHCP 或 PXE 通信。
答：是的，您可以在无 DHCP 环境中使用 WDS，但该解决方案无法扩展，因为您必须为打算支持的每个安装创建唯一的 CD 介质，并且每个安装都要有属于自己的唯一的 IP 地址。这种情况下使用 DVD 介质进行安装可能更为可取。如果必须通过无 DHCP 的 WDS 进行安装，请按以下步骤操作：
  1. 使用静态定义的服务器（指向安装操作将要使用的特定 WDS 服务器）创建一个 WDS Discover 映像。
  2. 在此目标 WDS 服务器的端口 4011 上启用 DHCP 通信。即使不使用 DHCP，也要启用此通信，因为 WDS 客户端要通过它与服务器握手。
  3. 使用静态 IP 地址（而不是 DHCP）创建唯一的 Windows PE 介质。
请注意，此解决方案采用起来比较麻烦，因为要避免 IP 地址冲突，客户端介质必须是唯一的，而且您必须指向网络上某台特定的 WDS 服务器。由于 PXE（它本身就基于 DHCP）是 WDS 的基础，因此您可以明白为什么您的环境中启用了 DHCP 后 WDS 的工作状况会大大改善。

问：我想从 PXE 服务器（而不是 WDS 服务器）通过 PXE 引导 Windows PE 2.0。应该怎样操作？
答：support.microsoft.com/kb/926172 上的知识库文章可能为如何从非 WDS 的 PXE 服务器引导 Windows PE 2.0 提供了一些指导，但请注意，Microsoft 在这方面的支持相当有限。

问：BDD 是什么？Windows 自动安装工具包 (WAIK) 是 BDD 的一部分吗？
答：BDD（实际上是 Business Desktop Deployment Solution Accelerator）是一个框架，它为如何以一种可管理、可重现的方式使用 Windows 部署工具（如 WAIK）提供指导。WAIK 并不直接从属于 BDD，但 BDD 会将所有必需的工具（包括 WAIK 在内）组织在一起以便您进行安装（如果您尚未安装这些工具的话）。因此虽然从技术上讲 BDD 并不包含 WAIK，但它要发挥作用确实离不开 WAIK。有关 BDD 的详细信息，请访问 microsoft.com/desktopdeployment。

问：从哪里可以获得适用于我的 Windows Server 2003 系统的 WDS？
WDS 是作为 WDS 目录中 WAIK 下载的一部分提供的（请参阅 go.microsoft.com/fwlink/?LinkId=85377）。

问：如何配置 Windows PE 2.0 才能让其使用静态 IP 地址引导并支持 DNS 配置？
答：若要配置静态 IP，请使用图 1 所示的 unattend.xml 示例，并将其放在 CD、USB 闪存驱动器或其他可引导介质的根目录下以便提取。如果还需要 DNS 支持，您需要再运行以下命令：
Figure 1 图 1 unattend.xml (Close Figure 1)
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
 <settings pass="windowsPE">
  <component
   name="Microsoft-Windows-TCPIP"
   processorArchitecture="x86"
   publicKeyToken="31bf3856ad364e35"
   language="neutral"
   versionScope="nonSxS"
   xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Interfaces>
    <Interface wcm:action="add">
     <Ipv4Settings>
      <DhcpEnabled>false</DhcpEnabled>
     </Ipv4Settings>
     <UnicastIpAddresses>
      <IpAddress wcm:action="add" wcm:keyValue="1">
       192.168.0.1</IpAddress>
     </UnicastIpAddresses>
     <Identifier>Local Area Connection</Identifier>
    </Interface>
   </Interfaces>
  </component>
 </settings>
<cpi:offlineImage
 cpi:source="wim:c:/simtest/winpe.wim#Microsoft Windows Vista PE (X86)"
 xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

net start "DNS Client"
netsh interface ipv4 add dnsserver "Local Area Connection" 192.168.2.10 index=1

问：能否通过光纤通道控制器引导 Windows PE？
答：可以，提供的光纤通道 HBA 支持通过 Int13 注册启动卷，这样启动卷即可在 BIOS 中显示为 Windows PE 的可启动卷。您还必须像添加任何其他现成的存储控制器驱动程序那样添加光纤通道控制器的驱动程序。

问：Windows PE 2.0 总是从 RAMDisk 引导。我的某些系统没有足够的 RAM 来支持这种引导方式。请问不用 RAMDisk 能否能够引导 Windows PE 2.0？
答：能。特别是对于内存小于 256MB 的系统，为了进行引导，可能需要实现不基于 RAMDisk 的 Windows PE。目前 Microsoft 正在计划提供一篇支持文章来讲解如何实现这一点。有两点需要特别注意：一是您将不能像使用 RAMDisk 时那样交换介质，二是引导速度将比基于 RAMDisk 的 Windows PE 2.0 版本慢很多。

问：我尝试过从非 DVD 介质引导 Windows PE 2004 和 Windows PE 2005（1.5 或 1.6）以及从 DVD 复制图像（或其他数据）。我并未从该 DVD 引导，只是从中复制数据，但却无法执行操作。在完整安装的 Windows 下该 DVD 是可读的，但在 Windows PE 下却报错说该卷已损坏或不可读。这一问题可以解决吗？
答：可以解决。默认情况下，Windows PE 1.x 并不支持 UDF 格式的介质。根据定义，DVD 可以为 ISO Bridge 格式（一种兼容 ISO 和 UDF 的双格式）或仅为 UDF 格式。要运行正常，您需要向 Windows PE 安装中添加 UDF 驱动程序。Windows PE 中已经提供了此驱动程序，只是没有安装而已。要安装此驱动程序，请执行以下操作：
  1. 在记事本中打开 I386 目录（对于 Windows PE 的硬盘安装应为 MiniNT）中的 txtsetup.sif 文件。
  2. 找到称为 [CdRomDrivers.Load] 的部分，然后查找包含名为 cdfs.sys 的驱动程序的行。在该行下面添加这样一行代码：udfs = udfs.sys。此输入应类似于以下所示：
[CdRomDrivers.Load]
cdfs = cdfs.sys
udfs = udfs.sys
3. 找到称为 [CdRomDrivers] 的部分，然后查找包含 cdfs 的行。在该行下面添加这样一行代码：udfs = "Universal Disk File System"。此输入应类似于以下所示：
[CdRomDrivers]
cdfs = "CD-ROM File System"
udfs = "Universal Disk File System"
4. 保存并关闭 txtsetup.sif，根据需要重新创建 Windows PE 映像。现在您应该能够从 Windows PE 中读取任何 UDF 格式的 DVD 介质了。

问：我有许多较早的系统，运行的是 Windows XP，并不支持 ACPI。我能在这些系统上使用 Windows PE 2.0 以便将这些系统迁移到 Windows Vista 或者重新安装 Windows XP 吗？
答：不能。Windows PE 2.0 只支持与高级配置和电源接口 (ACPI) 相兼容的系统，无法在您的早期系统上启动。如果您需要在这些较早的系统上使用 Windows PE，请选择 Windows PE 1.6 或更低版本。

问：我想在 Windows PE（1.x 或 2.0）上运行我用 Visual Studio® 2005 编写的应用程序。请问可以运行吗？
答：这取决于您的应用程序的编写方式。如果您采用的是非托管 C++，应该可以，您的应用程序应该能够运行。但如果您采用的是托管代码语言（如 C# 或 J#），或者所写代码为托管的 C++ 代码，则应用程序无法运行。因为 Windows PE 并不支持 Microsoft® .NET Framework（无论何种版本），所以托管代码无法运行。

问：我正在尝试编写可用于 Windows PE 2.0 的应用程序，并且需要一些帮助。我最好到哪里去寻求帮助呢？
答：建议您先看一看《Windows PE Developer's Guide whitepaper》。

问：我已经连续几次从 CD 引导 Windows PE 2.0，但驱动器号 (RAMDisk) 一直是 X。我怎样才能知道它到底是从哪个驱动器号引导的呢？
答：请看一下注册表，下面的注册表项应反映了 Windows PE 最初引导时使用的真实驱动器号：
HKEY_LOCAL_MACHINE\SYSTEM\Setup\SystemPartition
如果您发现由于 Windows PE 中使用了第三方外壳程序而导致此注册表项未被填充，运行以下命令可将此注册表项更新为正确的值：
start /w wpeinit UpdateBootInfo

问：能否使用 ImageX 和 WIM 文件备份我的系统？
答：理论上是可以的，但我不建议您这样做。因为 ImageX 不能像真正的备份工具那样备份锁定的或打开的文件。建议继续使用真正的备份工具，以保护那些打开的和锁定的文件。

问：如果我捕获一个未压缩的 WIM 文件，其部署速度会比经过压缩的同一卷映像快一些吗？
答：效果并不明显，速度并不快。由于压缩，执行捕获操作时间会长些。但不管采用何种压缩类型（不压缩、XPress 或 LZX），将该映像应用于目标系统所花费的时间都不会有太大差别。因此我建议您根据实际所需的映像大小以及可用于捕获的时间来选择压缩类型。

问：要将 WIM 映像应用于磁盘，是否需要对磁盘进行重新分区和格式化？
答：是的，需要。为获得干净的系统映像，需要先用 Diskpart 工具清除卷的内容（或者先删除然后重新创建目标分区）。您也可以在应用映像之前对该卷进行完全格式化。
另外还必须记住，Windows Vista 之前的 Windows 版本使用不同的引导扇区，因此，如果使用 Windows PE 2.0 部署 Windows Server 2003 或更早版本，在开始安装 Windows 或应用其 WIM 之前，需要从 Windows PE 中运行以下命令，以便将引导扇区设置为能够引导 Windows Server 2003 及更早版本的引导扇区：
bootsect /nt52 sys C: /force

总结
我希望本文有关 WDS 的更新内容和我对这些问题的回答不仅对您有所帮助，而且正是您所关心的。我会认真对待您提出的所有问题，并且只要专栏版面允许，我会尽我所能回答您的问题。请随时通过邮件将您的问题发送到我在简介中提供的电子邮件地址。
Windows Vista 硬件评估
Baldwin Ng

好消息 － 您的经理终于对您在一个月之前提出的建议作出了答复。显然，他一直在认真考虑您所提出的在整个组织内部署 Windows Vista 的建议，并已开始认识到管理单一操作系统所带来的好处和节约的成本。不过，他还没有完全认可将所有 PC 全部更新为 Windows Vista 系统从财务角度讲是有意义的。他希望看到具体、详细的信息，说明哪些 PC 可以立刻迁移到 Windows Vista，而哪些 PC 需要一些小的升级才能迁移，例如增加系统内存和硬盘空间。他还希望您在本周末之前给出答复。那么，您该如何入手呢？在您的组织还没有任何完善的资产或网络管理工具的情况下，您如何在短短几天内给出答复呢？更糟糕的是，您的前任也没有留下足够的关于现有网络资产的信息。
Microsoft 刚刚发布了 Windows Vista 硬件评估，这是一个解决方案加速器，可帮助您确定组织的就绪程度是否能够迁移到 Windows Vista（请参阅 microsoft.com/technet/wvha）。对于大多数中型组织，此工具可在几小时内快速评估网络上的 PC，并生成有关硬件和设备兼容性的详细报告，以显示其是否已为迁移做好准备。所有这一切无需在您网络的任何 PC 上安装任何软件代理。
Windows Vista 硬件评估基于之前为 Microsoft 评估和部署解决方案（ADS，Microsoft Assessment and Deployment Solution）开发的强大的清单收集和报告技术，通过三个步骤即可创建一组就绪程度报告：

1. 硬件清单
通过使用 Windows Management Instrumentation (WMI)、Active Directory® 和其他诸如 NetServerEnum 的 Windows 网络协议，此工具可以查找到域内的计算机和工作组计算机。清单生成后，所有系统资源和设备信息都被存储在一个 SQL Server™ 2005 Express 数据库中。此工具的当前版本可支持多达 5,000 台计算机的网络查找。未来版本可能会支持更大规模的网络。

2.兼容性分析
该工具利用 Windows 团队提供的最新设备和 BIOS 数据库，围绕 Windows Vista 的硬件和设备兼容性来分析每台 PC 的就绪程度。此外，驱动程序信息通过一个定期更新的 Web 服务来提供，因此每次运行该工具时都可以获得最新的信息。

3.就绪程度报告
最后一步是自动生成一组 Microsoft Word 文档和 Excel® 电子表格形式的就绪程度报告。这些报告提供了每台 PC 的就绪状况信息和升级建议。
Windows Vista 硬件评估是对其他 Windows Vista 解决方案加速器（包括 Business Desktop Deployment 2007 和 Windows Vista 安全指南）的补充。有关详细信息，请访问解决方案加速器主页。

Baldwin Ng 是 Microsoft 解决方案加速器团队的产品经理，致力于创建自动化的软件工具来帮助客户和咨询人员更快、更有效地采用 Microsoft 软件。您可以通过电子邮件 Baldwin.Ng@microsoft.com 与他联系。

Wes Miller是位于得克萨斯州奥斯汀市的 Pluck 公司 (www.pluck.com) 的一名开发经理。他曾在奥斯汀市的 Winternals Software 公司任职，并在 Microsoft 担任过 Windows 项目经理和产品经理。Wes 的联系方式是：technet@getwired.com。对于 Scott Dickens（Microsoft Windows 部署服务的项目经理）为本文介绍 WDS 新增功能提供的帮助，Wes 在此表示感谢。


 工作笔记: 保持敏锐
工作笔记
保持敏锐
Joshua Hoffman

啊，现场实践！ 我对它非常了解。在差不多两年前就任当前这一职务（这本精致出版物的技术编辑）之前，我是一名活跃的 IT 实践专业人士。我干了五年的 Microsoft 咨询服务工作，还在各种各样的财富 100 强公司的 IT 部门工作了几年。然后我被拉上了这艘快艇。我不是在报怨 - 我们这里有很多同事，而且我也开始了解你们并和所有读者一道把它做得更好！另外如果我再也不必在星期一早晨 6 点搭乘飞机来上班，感觉也会很不错啊。
但我的新工作也有其不好的一面。许多 IT 专业人士都会认为，学习与我们的工作相关的新东西（并及时掌握最新知识）的最佳方式是实践。实际的动手应用是一种有力的学习工具。但随着职务的晋升和职责的改变，突然间您会发现您是一位不需要管理系统或基础架构的 IT 专业人士。同时许多事物都也在飞快地变化着。自从我就任这一新职务以来，Windows® 新版本具有了新的部署框架、新的安全性基础架构、新的网络堆栈及其他一些功能。噢，还有新版 Office，Exchange Server，SQL Server™ 和 Microsoft® Operations Manager。此外，还出现了一些新工具：Windows PowerShell™、MMC 3.0、Windows 自动安装工具包。我希望我什么都没有遗漏。
看来两年内可能会发生很多变化。因此，如果学习的最佳方式是实践，而您的工作已不再包含“实践”部分，您怎样才能跟上变化呢？
哦，我当然希望本杂志会给您帮助。我知道它对我有帮助。我们有许多非常精于业务的优秀作者，我本人也在不断地从他们的专业知识中受益。但有时您还是需要动手实践。我通常都是以 Virtual PC（或 Virtual Server）作为起点，二者都可从 Microsoft 网站下载（您可在我们网站的下载分区中找到链接）。借助虚拟化技术，我可以直接在我的便携式计算机上快速生成自己的 Active Directory® 或自定义 Windows Vista™ 部署。根本不需要额外的硬件。当我想了解某个工作机理时，如果亲自从头到尾感受一下整个过程，效果会大不相同。
Virtual PC 唯一吸引人的是您需要实际生成虚拟环境（安装操作系统，正确配置每一样东西等等），如果这正是您所要了解的，那真是太好了。但如果您只想了解某一产品的某一特性或功能，该如何呢？例如，如果您想了解 Exchange Server 2007 中新的遵从性特性，该怎么办？从头开始安装和配置 Windows Server®、Active Directory 和 Exchange Server 似乎非常麻烦。请进入 TechNet 虚拟实验室。以鄙人之见，虚拟实验室是在很长一段时间以来的最佳培训资源之一。虚拟实验室团队已经完成了最艰难的工作 - 他们预安装、预配置了 180 多个虚拟机，涵盖了 20 多个产品的不同组合。每一组合都提供一组培训练习来帮助您全面熟悉常见任务和新特性。而其最大优点是整个过程都在一个浏览器环境中进行，并寄宿在 Microsoft 托管的服务器上，因此无需占用您自己的硬件资源。
如此看来，如果不再从事一线工作，要想做到与时俱进确实比较困难，但并不是不可能！我已经向您推荐了我最喜欢的一些资源。并且正如我的好友 Edward Dake 几个月前在本专栏中所指出的那样，我们之间的互相帮助也是一个最佳资源。您可以随时寻求帮助。

Joshua Hoffman是《TechNet 杂志》的技术和组稿编辑。


 Windows 机密: 确定常用程序
Windows 机密
确定常用程序
Raymond Chen

单击“开始” 按钮，将弹出“开始”菜单。左侧是一个程序列表。该程序列表是如何选择的？首先，我们来了解其基本原则：最近运行的程序通常显示在“开始”菜单的首页上。请记住此原则，很快您将发现在进行一些微调时必须使用此原则。
基本规则是：您每次启动一个程序，该程序就获得一分。反之，如果未启动某个程序的时间越长，它失掉的分值就会越多。“开始”菜单显示分值最高的那些程序。非常简单，是不是？这一部分选择算法不会令人感到困惑。在应用基本规则后，将进行微调，这是最令人费解的部分。
在进行微调之前，应了解一些基本规则中未明确说明的事项。请注意，规则讨论的是启动程序而非快捷方式。一些程序安装了多个快捷方式，使用哪个快捷方式都可以启动程序。如果不同的快捷方式都指向同一可执行程序，则该程序会累积通过不同快捷方式获取的所有分值。
“开始”菜单
这还意味着即使您不从“开始”菜单中运行程序，但只要从“资源管理器”运行程序，它就会获得分值。如果手动运行程序（比如打开文件夹并双击可执行文件来运行程序），它仍可以获得分值并最终显示在“开始”菜单的首页中。
现在，如果该程序获得足够分值并显示在“开始”菜单的首页中，则 Windows® 就要确定显示哪个快捷方式图标。毫无疑问，将优先显示最常使用的快捷方式。
某些程序会从列表中筛选出来，这是微调的一部分。例如，已固定到“开始”菜单的程序不会出现，因为显示同一程序的两个图标没有意义。毕竟，正是因为您经常运行该程序，才会将其固定到“开始”菜单。
另一个微调步骤是筛选掉干扰项。显示许多程序的原因是：它们是记事本或写字板等常见帮助程序的快捷方式 - 如显示自述文件的快捷方式。需要筛选掉这些快捷方式，这样就不会将其视为代表记事本等程序。顺便提一句，程序通过在其应用程序注册中创建 NoStartPage 值，可以将其注册为不包含在“开始”菜单的首页中。
此外，基本规则不考虑启动一次后始终运行的程序。根据对规则的严格解释，此程序在您启动它时获得一分，在经过一段时间后会失去这一分。（在这种情况下，“经常”是“所有时间”的非常保守的说法！）因此，我们添加了另一条规则：如果某个程序连续运行一天，它会获得一分。这样，程序就可以按照其获得的分值显示在“开始”菜单的首页中，而不会因为某些程序获得分值过多而掩盖实际启动的程序。毕竟，如果始终某个运行程序，您就不需要频繁启动它。
在 Windows Vista™ 中，添加了几个附加的微调规则。例如，在选择未从“开始”菜单中启动过的程序的候选快捷方式时，现在优先使用没有命令行参数的快捷方式。最常运行的程序将始终显示在该列表中，而不论其分数是多少。

Raymond Chen的网站 The Old New Thing 和同命书（Addison Wesley，2007）讨论了 Windows 历史和 Win32 编程。您可以给他打电话（这一点很重要），来电将按电话打入顺序接听。