近日,微软发布了 Windows 管理框架 3.0 测试版(Windows Management Framework,WMF),其中包括 PowerShell 3.0 以及 WMI 和 WinRM 的更新版本。
正如 InfoQ 在 WMF3 CTP 宣布时介绍的一样,PowerShell 3.0 包含了几个新特性。以下是部分亮点:
工作流可用于创建那些即使在关机情况下也能够被中断和恢复的、并行或长期运行的任务。该特性利用了 Windows Workflow Foundation (WWF)的功能。PowerShell 脚本被翻译成 WWF 代码以创建工作流。类似地,更加健壮的会话能够让任务从网络中断和宕机中获得更好地恢复,从而可以接着上次停止的地方继续运行。
PowerShell 3.0 使用了动态语言运行时(Dynamic Language Runtime)。相比 PowerShell 2.0,它带来了显著的性能提升。PowerShell 3.0 重写了解析器,并开放了 API。Adam Driscoll针对这些改动表达了一些自己的看法:
Compiler 类实现了 ICustomAstVisitor,这意味着编译器会指定怎样遍历抽象语法树(Abstract Syntax Tree,AST)。我在仔细阅读完类成员之后,研究了一下 Compile 方法。该方法的输入是一个抽象语法树,而输出是一个表达式(Expression)。也就是说,编译器会访问抽象语法树中的每一个结点,并将其编译成一个 LINQ 表达式树。太邪恶了!接下去表达式会被编译并调用……继而存储为当前进程内的一个动态方法(DynamicMethod)。由于它已经被编译过,所以以后不需要对其重新进行解析。
此外,WMF 3.0 还提供了一个新的集成脚本环境(Integrated Scripting Environment,ISE)扩展(你可以通过 PowerShell 中的服务器管理器找到它)。集成脚本环境方便了用户查找正确的命令,进行语法检查以及查看必要参数和可选参数。它也支持智能感知,并且可以直接运行命令,或将命令插入到脚本中。
WMF 3.0 中还包含了 Windows 管理规范(Windows Management Instrumentation,WMI)以及 Windows 远程管理(Windows Remote Management,WinRM)的更新版本。另外还有一个新的服务器管理器公共信息模型供应程序(Server Manager CIM Provider),它可以让用户在 Windows Server 8 测试版的 WMF 中管理 Windows 2008 服务器。最后,微软还推出了 Windows PowerShell Web 服务,它通过一个 RESTful 接口暴露 PowerShell cmdlet,从而使当前不支持 WMF 的客户端可以使用 OData 协议访问其中的功能。
WMF 3.0 可用于 Windows 7 Sp1、Windows Server 2008 R2 SP1 和 Windows Server 2008 SP2(同时支持 32 位和 64 位版本的 2008 SP2 也是 WMF 3.0 新特性之一)。目前微软对 WMF 3.0 最终是否可用于旧版操作系统中尚未表态。PowerShell 3.0 被包含进 Windows 8 测试版,并成为了系统的一部分。
评论