本程序员指南面向有兴趣为系统管理员提供命令行管理环境的开发者。 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 提供的主机应用(powershell.exe),但同样可以通过自定义主机应用访问,满足特定需求。 欲了解更多信息,请参见 Windows PowerShell 工作原理。
Windows PowerShell Cmdlets
cmdlet 是 Windows PowerShell 环境中使用的一个轻量级命令。 Windows PowerShell 运行时在命令行提供的自动化脚本上下文中调用这些 cmdlet,同时 Windows PowerShell 运行时也通过 Windows PowerShell API 以程序方式调用这些命令。
关于 cmdlet 的更多信息,请参见 编写 Windows PowerShell Cmdlet。
Windows PowerShell Providers
在执行管理任务时,用户可能需要检查存储在数据存储中的数据(例如文件系统、Windows 注册表或证书存储)。 为了简化这些作,Windows PowerShell 定义了一个称为 Windows PowerShell 提供者的模块,可用于访问特定数据存储,如 Windows 注册表。 每个提供者都支持一组相关的命令小工具,为用户提供存储中数据的对称视图。
Windows PowerShell 提供了若干默认的 Windows PowerShell 提供者。 例如,注册表提供者支持Windows注册表的导航和作。 注册表键以项表示,注册表值被视为属性。
如果你暴露了一个用户需要访问的数据存储,你可能需要自己编写 Windows PowerShell 提供者,详见 《创建 Windows PowerShell 提供者》。 有关Windows PowerShell提供者的更多信息,请参见 《Windows PowerShell工作原理》。
主机应用
Windows PowerShell 包含默认的主机应用程序 powershell.exe,这是一个控制台应用程序,它与用户交互,并通过控制台窗口托管 Windows PowerShell 运行时。
很少需要为Windows PowerShell编写自己的主机应用,尽管支持自定义。 当你需要比默认主机应用更丰富的图形界面时,可能需要自己的应用程序。 当你基于命令行构建图形界面时,你可能还需要一个自定义应用。 欲了解更多信息,请参见 《如何创建 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 定义了命令、提供者和其他程序模块的代码。 你并不局限于使用 Microsoft Visual Studio 来创建 Windows PowerShell 的定制模块,尽管本指南中提供的示例已知可以在该工具中运行。 你可以使用任何支持类继承和属性使用的任何 .NET 语言。 在某些情况下,Windows PowerShell API 要求编程语言能够访问泛型类型。
程序员参考
关于为 Windows PowerShell 开发的参考,请参见 Windows PowerShell SDK。
使用 Windows PowerShell 入门
关于开始使用 Windows PowerShell shell 的更多信息,请参见《随 Windows PowerShell 一起入门 》。 还提供了快速参考三折文档作为 cmdlet 使用入门指南。
本指南内容
| 主题 | Definition |
|---|---|
| 如何创建 Windows PowerShell 主机应用程序 | 本节描述如何编写作运行空间的主机应用程序,以及如何编写实现自身自定义主机的主机应用程序。 |
| 如何创建 Windows PowerShell Snap-in | 本节介绍如何创建用于注册装配中所有指令和提供者的 snap-in,以及如何创建自定义 snap-in。 |
| Windows PowerShell 概念 | 本节包含一些概念性信息,帮助你从开发者的角度理解Windows PowerShell。 |