Windows PowerShell 在设计上集成了源自众多不同环境的概念。尽管使用过特定 shell 或编程环境的人可能会熟悉其中几个概念,但很少有人了解所有这些概念。查看这些概念可帮助您概括了解本 shell。
命令不是基于文本的
与传统的命令行界面命令不同,Windows PowerShell cmdlet 旨在可处理对象 -- 结构化的信息,而不只是显示在屏幕上的字符串。命令输出始终提供需要使用的额外信息。我们将在本文档中深入讨论此主题。
如果您过去曾使用文本处理工具来处理命令行数据,则会发现,在 Windows PowerShell 中尝试使用这些工具时,其行为会有所不同。在大多数情况下,您不需要使用文本处理工具来提取特定信息。通过使用标准的 Windows PowerShell 对象操纵命令,可直接访问任何数据部分。
命令系列是可扩展的
许多接口(例如 Cmd.exe)均不能提供直接扩展内置命令集的方法。您可以创建在 Cmd.exe 中运行的外部命令行工具,但这些外部工具不能提供服务(例如帮助集成),而且 Cmd.exe 不能自动识别它们是有效的命令。
Windows PowerShell 中的本机二进制命令(也称为 cmdlet,读作 command-let)可以通过您创建并使用管理单元添加到 Windows PowerShell 中的 cmdlet 进行补充。与任何其他接口中的二进制工具相同,Windows PowerShell 管理单元已经过编译。您可以使用它们将 Windows PowerShell 提供程序以及新的 cmdlet 添加到 shell 中。
由于 Windows PowerShell 内部命令的特殊性质,我们将它们称为 cmdlet。
注意: | |
Windows PowerShell 可以运行除 cmdlet 以外的其他命令。《Windows PowerShell 用户指南》中将不会详细讨论这些命令,但了解这些命令类型类别会很有帮助。Windows PowerShell 支持与 UNIX shell 脚本和 Cmd.exe 批处理文件类似但文件扩展名为 .ps1 的脚本。Windows PowerShell 还允许您创建可直接用于界面或脚本中的内部函数。 |
Windows PowerShell 处理控制台输入和显示
键入命令时,Windows PowerShell 始终会直接处理命令行输入。Windows PowerShell 还可以设置屏幕上显示的输出格式。此功能十分重要,因为它可以减少处理每个 cmdlet 所需的工作,并确保您在使用任何一种 cmdlet 时都能始终以相同方式进行操作。这样可以简化工具开发人员和用户的工作,我们不妨以命令行帮助为例。
对于请求和显示帮助,传统的命令行工具都有它们自己的方案。一些命令行工具使用 /? 来触发帮助显示;而其他一些命令行工具则使用 -?、/H 甚至 //。其中一些工具会在 GUI 窗口中显示帮助,而不以控制台显示。某些复杂工具(例如应用程序更新程序)会先将内部文件解包,然后才显示其帮助。如果使用的参数不正确,则该工具可能会忽略键入的内容,并自动开始执行任务。
在 Windows PowerShell 中输入命令时,Windows PowerShell 将自动分析并预处理所输入的全部内容。如果在 Windows PowerShell cmdlet 中使用 -? 参数,则始终表示“显示此命令的帮助”。Cmdlet 开发人员无需分析该命令;他们只需提供帮助文本。
即使是在 Windows PowerShell 中运行传统命令行工具,您也可以使用 Windows PowerShell 的帮助功能,了解这一点十分重要。Windows PowerShell 将对参数进行处理并将结果传递给外部工具。
注意: | |
如果在 Windows PowerShell 中运行图形应用程序,将会打开该应用程序的窗口。只有在处理您提供的命令行输入或返回到控制台窗口的应用程序输出时,Windows PowerShell 才会进行干预;它不会影响该应用程序的内部工作方式。 |
Windows PowerShell 使用某些 C# 语法
由于 Windows PowerShell 基于 .NET Framework,因此 Windows PowerShell 的语法功能和关键字与 C# 编程语言中所使用的语法功能和关键字十分类似。如果您对 C# 语言感兴趣,通过了解 Windows PowerShell 将便于您轻松学习该语言。
如果您不是 C# 程序员,这一相似性则无关紧要。不过,如果您已熟悉 C#,则这些相似性可以让您更轻松地了解 Windows PowerShell。