此程序员指南面向有兴趣为系统管理员提供命令行管理环境的开发人员。 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 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 使用的入门提供。
本指南的内容
主题 | 定义 |
---|---|
如何创建 Windows PowerShell 提供程序 | 本部分介绍如何为 Windows PowerShell 生成 Windows PowerShell 提供程序。 |
如何创建 Windows PowerShell 主机应用程序 | 本部分介绍如何编写可作运行空间的主机应用程序,以及如何编写实现其自己的自定义主机的主机应用程序。 |
如何创建 Windows PowerShell 管理单元 | 本部分介绍如何创建用于在程序集中注册所有 cmdlet 和提供程序的管理单元,以及如何创建自定义管理单元。 |
如何创建控制台 Shell | 本部分介绍如何创建不可扩展的控制台 shell。 |
Windows PowerShell 概念 | 本部分包含概念信息,可帮助你从开发人员的角度了解 Windows PowerShell。 |