PowerShell 代码的工作原理
为了帮助你了解代码的工作原理,我们需要讨论什么是程序。 我们还需要解释编程语言是什么,以及该语言如何将命令传递给计算机。
注释
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
什么是程序?
程序是一组完成计算任务的指令。 这些指令被编译成计算机可以理解的格式,然后由用户运行。 用户可以是一个人,也可以是另一个程序。 计算机按顺序执行指令,一次执行一行指令,直到没有其他行要执行或程序被显式指示停止执行。
即使是最基本的程序也能执行以下一项或多项任务:
- 接受来自某个源的输入。 输入包括以下信息:
- 来自在键盘上键入内容或在界面上选择控件的用户的信息。
- 从文件中检索到的信息。
- 从另一个程序或网络连接调用的信息。
- 处理信息,其中包括:
- 执行逻辑。
- 执行数学计算。
- 控制数据输入来生成新数据。
- 输出结果,其中包括以下信息:
- 在屏幕上向用户显示的信息。
- 保存到文件的信息。
- 发送到另一个程序的信息。
程序可以出于不同目的采用不同的形式。 程序可以是:
- 独立应用程序,如游戏、文本编辑器、计费软件等。
- 脚本,如在另一个程序中执行以自动执行某功能的高级宏。
- 实时代码、公式和数据可视化效果的组合。
某些程序(包括本模块中的示例)只需要几行代码。 但是像操作系统这样的复杂程序需要数万甚至数百万行代码。
什么是编程语言?
编程语言的作用是让人们以人类可读可理解的方式为计算机编写指令。 计算机理解语言的方式通常与人类不同。 编程语言为程序编写者提供了一种具体但又不那么复杂的方式来与计算机交互,以向计算机发出指令。 用编程语言编写的指令称为“代码”。
有许多编程语言,每一种都有不同的语法。 不过,在学习了第一种编程语言之后,可以将其中的许多概念应用到所学的每一种新语言中。
什么是语法?
与任何口语或书面语言一样,编程语言有自己的语法规则(称为“语法”)。 所有编程语言的语法都包括关键字、运算符或其他可能特定于相应语言的规则类型。
关键字是编程语言中预留的具有特殊含义和行为的特定词。 在 PowerShell 中,许多关键字读起来像英语。 例如,if、while、return 是你可用于在 PowerShell 和许多其他语言中编写代码的关键字。
运算符是特殊字符,如括号 (()) 和等于号 (=)。 这些字符指示计算机执行特定的数学、关系或逻辑运算以生成一个结果。
当你在上一单元的 Cloud Shell 终端中键入代码时,可能已经注意到文本和符号的颜色发生了细微变化。 这种颜色编码称为“语法突出显示”。 当你阅读代码时,语法突出显示可以帮助你发现任何错误。 此功能在许多代码编辑器(如 Visual Studio Code)中都是可用的,甚至更加可靠。
在 PowerShell 中编译代码
计算机不擅长按照我们编写程序的方式来阅读程序。 编程语言需要被翻译成计算机可以理解的形式。 编程语言有多种实现这种翻译的方法。
许多编程语言将代码编译为单独的步骤。 你编写代码,通过称为编译器的特殊程序运行它,然后编译器生成可执行包来运行。
其他语言(如 Python)有解释器,它为计算机解释代码,并在解释代码时一次执行一行代码。
与编译和解释方法相比,PowerShell 的工作方式略有不同,但也有一些相似之处。
PowerShell 被编译成抽象语法树 (AST),首先在内存中,然后运行。 但要使用 PowerShell,你不需要在这里进行深入研究。 你所需要知道的是,计算机在查找主要问题时首先检查 AST 中的代码。 然后,如果一切正常,则计算机会运行程序,而不需要编译的可执行程序。 此方法非常有用,因为它可确保代码在计算机运行代码之前正确运行。 否则,可能会由于语法错误而进行更改并停止。 相比之下,Python 等解释型语言会一直运行代码,直到发现语法中有错误。
探索 PowerShell
PowerShell 的一项重要功能是其内置的帮助系统,便于你快速访问 PowerShell 命令的相关信息。 如果在编写过程中遇到麻烦,则可以通过使用 Get-Help 命令来查找有关命令或 PowerShell 概念的帮助信息。 例如,若要查看 Write-Output 命令的所有详细信息,则可以键入并运行下面的命令:
Get-Help -Name 'Write-Output' -Full
Get-Help 是要运行的命令,而 Write-Output 是要获取其帮助的命令的名称。
-Full 开关指示 PowerShell 获取指定命令的所有信息,包括命令说明、参数信息、示例等。 此帮助信息可以在任何 PowerShell 终端(包括 Azure Cloud Shell 终端)中访问。
若要了解 PowerShell 提供的所有命令,则可以使用 Get-Command * 来查看完整列表。 星号 (*) 是 PowerShell 中的通配符。 使用它,可以匹配模式,以更动态地查找信息。 在此示例中,你使用 * 来筛选所有可用命令。 例如,要获取所有包含“User”的命令,请运行 Get-Command *User*。
PowerShell 的另一大好处是它附带了一个集成 shell。 通过使用此 shell,可以测试代码并与输出进行交互,而不必每次想要测试某内容时都运行代码。 为了确保代码按预期运行,你需要在终端中正确地键入它。