PowerShell简介

PowerShell是构建于.NET和.NET Core上基于任务的命令行shell和脚本语言。最初仅是Windows组件,后于2016年8月18日开源并跨平台支持。PowerShell可帮助系统管理员和高级用户快速自动执行用于管理操作系统(Linux、macOS 和 Windows)。

使用PowerShell命令可以从命令行管理计算机。PowerShell provider(提供程序)可让你访问数据存储(如注册表和证书存储),与你访问文件系统一样方便。

PowerShell由两部分组成,第一部分是Windows PowerShell,是为.NET Framework编写的,主要是面向Windows系统。另一部分是跨平台的PowerShell Core,是为.NET Core编写的,用于Linux、macOS 和 Windows等。

虽然.Net Framework和.Net Core高度兼容,但它们之间的API有所不同。 Windows PowerShell 和 PowerShell Core 中的API也有所不同。 打算在这两种环境中使用的模块需要了解这些差异。

Windows操作系统既可以运行Windows PowerShell,也可以运行PowerShell Core。

在PowerShell中,管理任务通常由cmdlet(发音为command-let)执行,这是执行特定操作的专用.NET类。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中。现在(2019年 9/25日),Windows PowerShell的最新版本是5.1,PowerShell Core的最新版本是6.2。

这个教程主要是介绍Windows PowerShell。以后的教程中我会把Windows Powershell简略成Powershell。

Windows PowerShell特点

  • 开放开源。PowerShell在GitHub上的项目地址是https://github.com/powershell/powershell
  • 简单易用。所有的命令都是cmdlet形式,仅一行命令就能实现其他语言多行才能实现的功能。例如,Get-Service显示所有的服务。
  • 交互式命令行和交互式脚本编写环境。Windows命令行提供了一个可访问命令行工具和基本脚本的交互式shell。 交互式脚本环境提供了编写,调试,运行Powershell脚本的环境。
  • 面向对象。PowerShell基于对象而非文本。命令输出的是一个对象。可以将输出对象通过管道发送给另一个命令以作为其输入。

启动Windows PowerShell

PowerShell是一个脚本引擎 dll,嵌入到多个主机中。 启动的最常见主机是交互式命令行PowerShell.exe和交互式脚本环境PowerShell_ISE.exe。

Windows 10打开PowerShell交互式命令行PowerShell.exe有三种方式。

方式一,开始菜单中启动PowerShell。
单击“开始” ,在搜索框中键入 PowerShell,然后单击“Windows PowerShell” 。
在“开始” 菜单中,依次单击“开始” 、“Windows PowerShell”文件夹,然后单击“Windows PowerShell” 。

方式二,在命令行处启动PowerShell。
在Cmd.exe、Windows PowerShell 或 Windows PowerShell ISE 中,键入PowerShell并回车。

方式三,快捷键按下 Window + R 打开运行对话框,键入PowerShell并回车。

Windows PowerShell启动交互式脚本环境PowerShell_ISE.exe和PowerShell.exe是类似的,只不过键入的命令是PowerShell_ISE。

Windows PowerShell编辑器-Windows PowerShell ISE

Windows PowerShell集成脚本环境(ISE)是 Windows PowerShell的主机应用程序,是默认的编辑器。让你可以在直观的图形环境中编写、运行和测试脚本与模块。 其主要功能,如语法着色、Tab 自动补全、可视调试、Unicode 遵从和上下文相关帮助,将为你带来丰富的脚本编写体验。但是,ISE处于维护模式,可能不会添加任何新功能。 此外,不支持具有PowerShell v6及更高版本的ISE。 想要使用图形工具管理PowerShell脚本等的用户应考虑使用Visual Studio Code。

PowerShell ISE初次打开的画面如下。 PowerShell ISE

PowerShell ISE关键功能

Windows PowerShell ISE中的关键功能包括:

  • 多行编辑:若要在“命令”窗格中的当前行下插入一个空行,请按 SHIFT + ENTER。
  • 选择性执行:要运行部分脚本,请选择要运行的文本,然后单击“运行脚本”按钮。 或者,按F8。
  • 上下文相关帮助:键入命令然后按下F1。例如,键入Invoke-Item,然后按 F1。 帮助文件将打开到Invoke-Item cmdlet的文章。 Windows PowerShell ISE允许你自定义其外观的某些方面。 它还具有其自己的Windows PowerShell配置文件脚本。

在Windows PowerShell ISE中获取帮助

在“帮助”菜单上,单击“Windows PowerShell帮助”。 或者,按F1。 打开的文件介绍了Windows PowerShell ISE和 Windows PowerShell,其中包括Get-Help cmdlet中提供的所有帮助。

Windows PowerShell文件

不仅可以在PowerShell交互式命令行上面输入命令执行,还可以将命令写入到文件后再执行。PowerShell的文件扩展名是.ps1。

PowerShell交互式命令行上面运行get-service命令。如下, PowerShell命令行

将get-service命令保存为文件后,在ISE上大家文件并运行。如下, PowerShell文件运行

PowerShell专业术语

术语(汉语) 术语(英语) 描述
二进制模块 binary module 一个Windows PowerShell模块,其根模块是一个二进制模块文件 (.dll)。 二进制模块可能包含或不包含模块清单。
通用参数 common parameter 一个参数,它由Windows PowerShell引擎添加到所有cmdlet、高级函数和工作流中。
使用点获取来源 dot source 在Windows PowerShell中,若要启动一个命令,可在该命令前键入一个点和一个空格。 采用点获取其来源的命令运行在当前范围而非新范围中。 命令创建的任何变量、别名、函数或驱动器都创建于当前范围,并在命令完成时提供给用户。
动态模块 dynamic module 一个仅存在于内存中的模块。 New-Module和Import-PSSession命令会创建动态模块。
动态参数 dynamic parameter 在某些情况下添加到Windows PowerShell的cmdlet、函数或脚本的一个参数。Cmdlet、函数、提供程序和脚本可以添加动态参数。
格式设置文件 formatting file 一个Windows PowerShell XML文件,它具有.format.ps1xml扩展名且定义Windows PowerShell 如何基于对象的.NET Framework类型来显示对象。
全局会话状态 global session state 包含 Windows PowerShell 会话用户可访问的数据的会话状态。
主机 host Windows PowerShell引擎用于与用户进行通信的接口。 例如,主机指定 Windows PowerShell 和用户之间处理提示的方式。
主机应用程序 host application 将 Windows PowerShell 引擎加载到其进程中并使用它执行操作的程序。
输入处理方法 input processing method Cmdlet 可用于处理其以输入形式所接收的记录的一种方法。 输入处理方法包括 BeginProcessing 方法、ProcessRecord 方法、EndProcessing 方法以及 StopProcessing 方法。
清单模块 manifest module 一个 Windows PowerShell 模块,它具有一个清单且其 RootModule 项为空。
模块清单 module manifest 一个 Windows PowerShell 数据文件 (.psd1),描述模块的内容并控制模块的处理方式。
模块会话状态 module session state 包含 Windows PowerShell 模块公用和专用数据的会话状态。 此会话状态中的私有数据不可供 Windows PowerShell 会话的用户使用。
非终止错误 non-terminating error 不能阻止 Windows PowerShell 继续处理命令的错误。
名词 noun 在 Windows PowerShell cmdlet 名称中连字符后面的单词。 名词描述了 cmdlet 在其上进行操作的资源。
参数集 parameter set 可用于相同的命令中以执行特定操作的一组参数。
pipe 在 Windows PowerShell 中,将前一个命令的结果作为输入发送到管道中的下一个命令。
管道 pipeline 一系列由管道运算符 (
PSSession PSSession 一种由用户创建、管理和关闭的 Windows PowerShell 会话类型。
根模块 root module 在模块清单的 RootModule 项中指定的模块。
运行空间 runspace 在 Windows PowerShell 中,在其中执行管道中每个命令的操作环境。
脚本块 script block 在 Windows PowerShell 编程语言中,可作为单个单元使用的语句或表达式的一个集合。 脚本块可以接受参数并返回值。
脚本模块 script module 一个 Windows PowerShell模块,其根模块是一个脚本模块文件 (.psm1)。 脚本模块可能包含或不包含模块清单。
脚本模块文件 script module file 一个包含 Windows PowerShell 脚本的文件。 该脚本定义脚本模块导出的成员。 脚本模块文件具有.psm1文件扩展名。
shell shell 用于将命令传递到操作系统的命令解释器。
开关参数 switch parameter 一个不带实参的形参。
终止错误 terminating error 阻止 Windows PowerShell 处理命令的错误。
事务 transaction 一个工作的原子单元。 必须将事务中的工作作为一个整体来完成;如果该事务的任何部分失败,那么整个事务都会失败。
类型文件 types file 一个 Windows PowerShell XML 文件,它具有 .ps1xml 扩展名且扩展 Windows PowerShell 中 Microsoft.NET Framework 类型的属性。
动作 verb 在 Windows PowerShell cmdlet 名称中连字符前面的单词。 它说明该 cmdlet 将执行的操作。
Windows PowerShell Windows PowerShell 为 IT 管理员提供全面控制以及实现系统管理任务自动化的一个命令行 Shell 和基于任务的脚本技术。
Windows PowerShell 命令 Windows PowerShell command 导致操作被执行的管道中的元素。Windows PowerShell 命令可以在键盘上输入或以编程方式调用。
Windows PowerShell 数据文件 Windows PowerShell data file 具有 .psd1 文件扩展名的文本文件。 Windows PowerShell 将数据文件用于多种用途,例如存储模块清单数据和存储用于脚本国际化的已翻译的字符串。
Windows PowerShell 驱动器 Windows PowerShell drive 一个提供直接访问数据存储的虚拟驱动器。 它可以由 Windows PowerShell 提供程序定义或是在命令行中创建。 在命令行创建的驱动器是特定于会话的驱动器,并在会话关闭时丢失。
Windows PowerShell 集成脚本环境 (ISE) Windows PowerShell Integrated Scripting Environment (ISE) 一个 Windows PowerShell 主机应用程序,使你能够运行命令并在友好、语法着色、符合 Unicode 的环境中编写、测试和调试脚本。
Windows PowerShell 模块 Windows PowerShell module 一个独立的可重用单元,使你能够对 Windows PowerShell 代码进行分区、组织和抽象化。 模块可以包含 cmdlet、提供程序、函数、变量和其他可作为单个单元导入的资源类型。
Windows PowerShell 提供程序 Windows PowerShell provider 一个基于 Microsoft .NET Framework 的程序,用于使专用数据存储中的数据在 Windows PowerShell 中可用,以便你可以查看和管理它。
Windows PowerShell 脚本 Windows PowerShell script 以 Windows PowerShell 语言编写的脚本。
Windows PowerShell 脚本文件 Windows PowerShell script file 具有 .ps1 扩展名且包含以 Windows PowerShell 语言编写的脚本的文件。
Windows PowerShell 管理单元 Windows PowerShell snap-in 定义一组可以添加到 Windows PowerShell 环境中的 cmdlet、提供程序和 Microsoft .NET Framework 的资源。
Windows PowerShell 工作流程 Windows PowerShell Workflow 工作流是一系列经过编程的连接步骤,会执行长期运行的任务,或是需要在多个设备或托管节点之间协调多个步骤。 Windows PowerShell 工作流使 IT 专业人员和开发人员可以按工作流的形式创作多设备管理活动序列,或工作流中的单个任务。 Windows PowerShell 工作流使你能够调整 Windows PowerShell 脚本和 XAML 并将其作为工作流运行。

参考资料:
维基百科-PowerShell https://ja.wikipedia.org/wiki/PowerShell#PowerShell_7

转载请注明本网址。