Windows PowerShell 程序员指南
本程序员指南面向有兴趣为系统管理员提供命令行管理环境的开发人员。 Windows PowerShell 为您提供了一种构建公开 .NET 对象的管理命令的简单方法,同时允许 Windows PowerShell 为您完成大部分工作。
在传统的命令开发中,您需要编写参数解析器、参数绑定器、过滤器以及每个命令公开的所有其他功能。 Windows PowerShell 提供了以下功能,使您可以轻松编写命令:
功能强大的 Windows PowerShell 运行时(执行引擎),具有自己的解析器和自动绑定命令参数的机制。
使用命令行解释器 (CLI) 格式化和显示命令结果的实用程序。
支持高级功能(通过 Windows PowerShell 提供程序),可以轻松访问存储的数据。
您可以用很少的成本通过丰富的命令或命令集来表示 .NET 对象,这将为管理员提供完整的命令行体验。
下一节将介绍关键的 Windows PowerShell 概念和术语。在开始开发之前,请熟悉这些概念和术语。
关于 Windows PowerShell
Windows PowerShell 定义了多种可在开发中使用的命令类型。这些命令包括:函数、过滤器、脚本、别名和可执行文件(应用程序)。本指南中讨论的主要命令类型是一个简单的小命令,称为“cmdlet”。 Windows PowerShell 提供了一组 cmdlet,并完全支持 cmdlet 自定义以适合您的环境。 Windows PowerShell 运行时使用管道处理所有命令类型,就像处理 cmdlet 一样。
除了命令之外,Windows PowerShell 还支持各种可自定义的 Windows PowerShell 提供程序,这些提供程序提供特定的 cmdlet 集。 shell 在 Windows PowerShell 提供的主机应用程序 (Windows PowerShell.exe) 中运行,但同样可以从您可以开发以满足特定要求的自定义主机应用程序访问它。有关详细信息,请参阅 Windows PowerShell 的工作原理。
Windows PowerShell Cmdlet
cmdlet 是在 Windows PowerShell 环境中使用的轻量级命令。 Windows PowerShell 运行时在命令行提供的自动化脚本上下文中调用这些 cmdlet,并且 Windows PowerShell 运行时还通过 Windows PowerShell API 以编程方式调用它们。
有关 cmdlet 的详细信息,请参阅编写 Windows PowerShell Cmdlet。
Windows PowerShell 提供程序
在执行管理任务时,用户可能需要检查存储在数据存储(例如,文件系统、Windows 注册表或证书存储)中的数据。为了使这些操作更容易,Windows PowerShell 定义了一个称为 Windows PowerShell 提供程序的模块,可用于访问特定的数据存储,例如 Windows 注册表。每个提供程序都支持一组相关的 cmdlet,以便为用户提供存储中数据的对称视图。
Windows PowerShell 提供了多个默认的 Windows PowerShell 提供程序。例如,注册表提供程序支持 Windows 注册表的导航和操作。注册表项表示为项目,注册表值则视为属性。
如果您公开用户需要访问的数据存储,您可能需要编写自己的 Windows PowerShell 提供程序,如创建 Windows PowerShell 提供程序中所述。有关 Windows PowerShell 提供程序的详细信息,请参阅 Windows PowerShell 的工作原理。
主机应用
Windows PowerShell 包括默认主机应用程序 powershell.exe,它是一个控制台应用程序,可与用户交互并使用控制台窗口托管 Windows PowerShell 运行时。
尽管支持自定义,但您很少需要为 Windows PowerShell 编写自己的主机应用程序。您可能需要自己的应用程序的一种情况是,您需要比默认主机应用程序提供的界面更丰富的 GUI 界面。当您的 GUI 基于命令行时,您可能还需要自定义应用程序。有关详细信息,请参阅如何创建 Windows PowerShell 主机应用程序。
Windows PowerShell 运行时
Windows PowerShell 运行时是实现命令处理的执行引擎。它包括提供主机应用程序与 Windows PowerShell 命令和提供程序之间的接口的类。 Windows PowerShell 运行时被实现为当前 Windows PowerShell 会话的运行空间对象,该会话是 shell 和命令执行的操作环境。有关操作详细信息,请参阅 Windows PowerShell 的工作原理。
Windows PowerShell 语言
Windows PowerShell 语言提供脚本函数和机制来调用命令。有关完整的脚本信息,请参阅 Windows PowerShell 附带的 Windows PowerShell 语言参考。
扩展类型系统 (ETS)
Windows PowerShell 提供对各种不同对象的访问,例如.NET 和XML 对象。因此,为了为所有对象类型提供通用抽象,shell 使用其扩展类型系统 (ETS)。大多数 ETS 功能对用户来说是透明的,但脚本或 .NET 开发人员将其用于以下目的:
查看特定对象的成员子集。 Windows PowerShell 提供了几种特定对象类型的“适应”视图。
将成员添加到现有对象。
访问序列化对象。
编写定制对象。
使用 ETS,您可以创建与 Windows PowerShell 语言兼容的灵活的新“类型”。如果您是 .NET 开发人员,则可以使用与 Windows PowerShell 语言应用于脚本相同的语义来处理对象,例如,确定对象的计算结果是否为
true。有关 ETS 以及 Windows PowerShell 如何使用对象的详细信息,请参阅 Windows PowerShell 对象概念。
Windows PowerShell 编程
Windows PowerShell 使用 .NET Framework 定义其命令、提供程序和其他程序模块的代码。尽管本指南中提供的示例已知可在该工具中运行,但在为 Windows PowerShell 创建自定义模块时,您并不局限于使用 Microsoft Visual Studio。您可以使用任何支持类继承和属性使用的 .NET 语言。在某些情况下,Windows PowerShell API 要求编程语言能够访问泛型类型。
程序员参考
有关 Windows PowerShell 开发时的参考,请参阅 Windows PowerShell SDK。
开始使用 Windows PowerShell
有关开始使用 Windows PowerShell shell 的详细信息,请参阅 Windows PowerShell 附带的 Windows PowerShell 入门。还提供了一份三页快速参考文档作为 cmdlet 使用的入门指南。
本指南的内容
- How to Create a Windows PowerShell Provider
本部分介绍如何为 Windows PowerShell 构建 Windows PowerShell 提供程序。
- How to Create a Windows PowerShell Host Application
本节介绍如何编写操作运行空间的主机应用程序以及如何编写实现其自己的自定义主机的主机应用程序。
- How to Create a Windows PowerShell Snap-in
本节介绍如何创建用于注册程序集中的所有 cmdlet 和提供程序的管理单元以及如何创建自定义管理单元。
- How to Create a Console Shell
本节介绍如何创建不可扩展的控制台 shell。
- Windows PowerShell Concepts
本节包含的概念性信息将帮助您从开发人员的角度理解 Windows PowerShell。
参见
Windows PowerShell SDK