[TOC]
微软官网:PowerShell 是构建于 .NET 上基于任务的命令行 shell 和脚本语言。 PowerShell 可帮助系统管理员和高级用户快速自动执行用于管理操作系统(Linux、macOS 和 Windows)和流程的任务, 其实可以看做是C#的简化版本还与PHP语言有相似之处(语法),与我们可以采用ISE 集成脚本环境
进行PS脚本脚本编写;
Powershell特点:
window7-window server 2012及
以上自带的个人pc和服务器上使用普遍;访问数据存储(如注册表和证书存储)
,与你访问文件系统一样方便。 表达式分析器和完全开发的脚本语言
。设计目标:
Windows 脚本宿主 (WSH)
具有可编写脚本的命令行工具和 COM 自动化对象,但不提供交互式 shell。PowerShell版本:
注意: Windows PowerShell 是为 .NET Framework 编写的,而 PowerShell Core 是为 .NET Core 编写的。 可移植模块是同时适用于 Windows PowerShell 和 PowerShell Core 的模块。
PowerShell系统要求
参考网站: Powershell Core : 新的PowerShell版本:https://aka.ms/pscore6 Micrisoft PowerShell Docs : https://msdn.microsoft.com/powershell/scripting/setup/windows-powershell-system-requirements PowerShell 在线教程:https://www.pstips.net/powershell-online-tutorials
PS控制台有两种模式: 快速编辑模式和标准模式的切换可以通过控制台标题栏->鼠标右击->属性->选项->编辑选项
。
Powershell的快捷键和cmd以及linux中的shell 都比较像。
PgUp PgDn 显示当前会话的第一个命令和最后一个命令
Enter 执行当前命令
End 将光标移至当前命令的末尾
Del 从右开始删除输入的命令字符
Esc 清空当前命令行 (V)
ALT+F7 清除命令的历史记录 (V)
F2 自动补充历史命令至指定字符(例如历史记录中存在Get-Process,按F2,提示"Enter char to copy up to",键入‘s’,自动补齐命令:Get-Proce) (V)
F4 删除命令行至光标右边指定字符处 (V)
F7 对话框显示命令行历史记录
F8 检索包含指定字符的命令行历史记录
F9 根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看
左/右方向键 左右移动光标
上/下方向键 切换命令行的历史记录
Home 光标移至命令行最左端
Backspace 从右删除命令行字符
Ctrl+C 取消正在执行的命令
Ctrl+左/右方向键 在单词之间移动光标
Ctrl+Home 删除光标最左端的所有字符 (V)
Tab 自动补齐命令或者文件名
描述:PowerShell 有一套推荐的标准谓词名,PS使用“谓词 - 名词”命名系统,每个 cmdlet 名称都由一个标准谓词、连字符和特定名词组成
,一般的谓词与名称的首字母为大写(在编程中需要抱持良好的风格);
比如:PowerShell 具有Get-Process、Stop-Process、Get-Service 和 Stop-Service
一看就一目了然等命令。说白了原来您需要记忆100个命令现在只需要10个谓词和 10 个名词就能搞定;
PowerShell 利用这些相似之处减少了解和使用 cmdlet 时需要知道的不同名称的数量。
Cmdlet 使用标准参数以及命令名称
cls 或 clear 别名
, PS解释这些别名并运行Clear-Host 函数
。
可以进行缩写-进截取谓词第一个字母和名词的前两个字母
)PS 支持几种其他类型的命令:
备注:
描述:Windows PowerShell 引入了 cmdlet(读作command-let
)的概念,它是内置于 Shell 的简单的单一函数命令行工具。
Windows PowerShell 包括一百多个基本核心 cmdlet 你可以编写自己的 cmdlet 并与其他用户共享。
启动PowerShell非常简单直接在CMD命令行之中:
TIPS:默认键入一个字符串PS会将它原样输出,如果该字符串是一个命令或者启动程序,在字符串前加‘&’
可以执行命令,或者启动程序。
PS C:\Users\WeiyiGeek> "ls"
ls
PS C:\Users\WeiyiGeek> &"ls"
# 目录: C:\Users\WeiyiGeek
# Mode LastWriteTime Length Name
# ---- ------------- ------ ----
# d----- 2019/7/26 8:45 .android
# d----- 2019/8/19 17:27 .config
描述:若要一次显示每篇帮助文章的一页,请使用 help 函数或其别名 man
基础实例:
#1.例如,若要显示 Get-ChildItem cmdlet 的帮助信息
man Get-ChildItem
help Get-ChildItem
描述:利用Get-Command可以采用通配符进行匹配查看
#0.查看指定的Cmdlet命令/Function的信息
PS> Get-Command -Name Clear-Host
# CommandType Name Version Source
# ----------- ---- ------- ------
# Function Clear-Host
#1.例如若要查找用于查看和更改 Windows 服务的 cmdlet 列表,请键入:
PS> Get-Command *-Service
PS> Get-Command -Noun Service #使用 Noun 参数查看将对同一类型的对象产生影响的命令系列,效果同上|
# CommandType Name Version Source
# ----------- ---- ------- ------
# Cmdlet Get-Service 3.1.0.0 Microsoft.PowerShell.Management
# Cmdlet New-Service 3.1.0.0 Microsoft.PowerShell.Management
# ...
#2.例如若要查看使用谓词 Get 的所有 cmdlet
PS> Get-Command -Verb Get # Verb 参数列出包含特定谓词的所有命令(以Get开头的Cmdlet命令)
# CommandType Name Version Source
# ----------- ---- ------- ------
# Alias Get-AppPackage 2.0.1.0 Appx
# Alias Get-AppPackageDefaultVolume 2.0.1.0 Appx
#3.获取有关命令的信息返回每个 cmdlet 语法的 Syntax 参数
PS> Get-Command Get-Help -Syntax
# Get-Help [[-Name] <string>] [-Path <string>] [-Category <string[]>] [-Component <string[]>] [-Functionality <string[]>] [-Role <string[]>] [-Full] [<CommonParameters>]
#4.使用 CommandType 参数可以获取其他类型的本机命令
Get-Command -CommandType [Alias|Function|Script]
描述:可以利用Get-help来进行查找Powershell的命令帮助;
#1.例如,下面的命令显示 Get-Service cmdlet 的输出对象成员的相关信息。
Get-help Get-service
et-Help Get-Service -Online #若要联机查看此 cmdlet 的帮助主题,转到 https://go.microsoft.com/fwlink/?LinkID=113332
#备注:Get-Help 在此计算机上找不到该 cmdlet 的帮助文件它仅显示部分帮助。
#2.若要在会话中获取所有 cmdlet 帮助文章的列表,请键入
Get-Help -Category Cmdlet
Get-Help Get-ChildItem -Detailed #若要显示详细信息,请使用Detailed 参数
Get-Help Get-ChildItem -Full #若要显示帮助文章中的所有内容,请使用 Full 参数
Get-Help Get-ChildItem -Parameter * #若要获取有关 cmdlet 的参数的详细帮助,请使用的 Parameter 参数
#3.获取Cmdlet命令显示帮助文章中的示例,
Get-Help Get-ChildItem -Examples
#4.获取有关脚本和函数的帮助
Get-Help c:\ps-test\TestScript.ps1 # 但是在运行 Get-Help * 时不会显示函数和脚本的帮助
描述:若要下载并安装包含此 cmdlet 的模块的帮助文件,请使用 Update-Help。
Update-Help Get-service
WeiyiGeek.
描述:Get-Alias cmdlet 显示与别名关联的本机 PowerShell 命令的真实名称。
#1.获取别名的真实命令
PS > Get-Alias cat
# CommandType Name Version Source
# ----------- ---- ------- ------
# Alias cat -> Get-Content
PS > Get-Alias cls
# Alias cls -> Clear-Host
WeiyiGeek.
描述:可以使用 Set-Alias cmdlet 创建自己的别名。
#1.PS设置别名样式
Set-Alias -Name gi -Value Get-Item
注意: PS内置别名无法被修改
,否则会报错 Set-Alias :别名不可写入,因为别名 gi 为只读别名或常量,无法写入。
术语 | 定义 | |
---|---|---|
二进制模块 | 一个 PS 模块其根模块是一个二进制模块文件 (.dll)。 二进制模块可能包含或不包含模块清单。 | |
通用参数 | 一个参数它由 PS 引擎添加到所有 cmdlet、高级函数和工作流中。 | |
使用点获取来源 | 在 PS 中若要启动一个命令,可在该命令前键入一个点和一个空格。 采用点获取其来源的命令运行在当前范围而非新范围中。 命令创建的任何变量、别名、函数或驱动器都创建于当前范围,并在命令完成时提供给用户。 | |
动态模块 | 一个仅存在于内存中的模块。 New-Module 和 Import-PSSession cmdlet 会创建动态模块。 | |
动态参数 | 在某些情况下添加到 PS cmdlet、函数或脚本的一个参数。 Cmdlet、函数、提供程序和脚本可以添加动态参数。 | |
格式设置文件 | 一个 PS XML 文件,它具有 .format.ps1xml 扩展名且定义 PS 如何基于对象的 .NET Framework 类型来显示对象。 | |
全局会话状态 | 包含 PS 会话用户可访问的数据的会话状态。 | |
主机 | PS 引擎用于与用户进行通信的接口。 例如,主机指定 PS 和用户之间处理提示的方式。 | |
主机应用程序 | 将 PS 引擎加载到其进程中并使用它执行操作的程序。 | |
输入处理方法 | Cmdlet 可用于处理其以输入形式所接收的记录的一种方法。 输入处理方法包括 BeginProcessing 方法、ProcessRecord 方法、EndProcessing 方法以及 StopProcessing 方法。 | |
清单模块 | 一个 PS 模块,它具有一个清单且其 RootModule 项为空。 | |
模块清单 | 一个 PS 数据文件 (.psd1),描述模块的内容并控制模块的处理方式。 | |
模块会话状态 | 包含 PS 模块公用和专用数据的会话状态。 此会话状态中的私有数据不可供 PS 会话的用户使用。 | |
非终止错误 | 不能阻止 PS 继续处理命令的错误。 | |
名词 | 在 PS cmdlet 名称中连字符后面的单词。 名词描述了 cmdlet 在其上进行操作的资源。 | |
参数集 | 可用于相同的命令中以执行特定操作的一组参数。 | |
管 | 在 PS 中,将前一个命令的结果作为输入发送到管道中的下一个命令。 | |
管道 | 一系列由管道运算符 (` | `) (ASCII 124) 连接的命令。 每个管道运算符将前一个命令的结果作为输入发送到下一个命令。 |
PSSession | 一种由用户创建、管理和关闭的 PS 会话类型。 | |
根模块 | 在模块清单的 RootModule 项中指定的模块。 | |
运行空间 | 在 PS 中,在其中执行管道中每个命令的操作环境。 | |
脚本块 | 在 PS 编程语言中,可作为单个单元使用的语句或表达式的一个集合。 脚本块可以接受参数并返回值。 | |
脚本模块 | 一个 PS 模块,其根模块是一个脚本模块文件 (.psm1);脚本模块可能包含或不包含模块清单。 | |
脚本模块文件 | 一个包含 PS 脚本的文件。 该脚本定义脚本模块导出的成员。 脚本模块文件具有 .psm1 文件扩展名。 | |
shell | 用于将命令传递到操作系统的命令解释器。 | |
开关参数 | 一个不带实参的形参。 | |
终止错误 | 阻止 PS 处理命令的错误。 | |
事务 | 一个工作的原子单元,必须将事务中的工作作为一个整体来完成;如果该事务的任何部分失败,那么整个事务都会失败。 | |
类型文件 | 一个 PS XML 文件,它具有.ps1xml 扩展名且扩展 PS 中 Microsoft.NET Framework 类型的属性。 | |
动作 | 在 PS cmdlet 名称中连字符前面的单词,它说明该 cmdlet 将执行的操作。 | |
PS | 为IT管理员提供全面控制以及实现系统管理任务自动化的一个命令行 Shell 和基于任务的脚本技术; | |
PS命令 | 导致操作被执行的管道中的元素。PS 命令可以在键盘上输入或以编程方式调用。 | |
PS数据文件 | 具有 .psd1 文件扩展名的文本文件。 PS 将数据文件用于多种用途,例如存储模块清单数据和存储用于脚本国际化的已翻译的字符串。 | |
PS驱动器 | 一个提供直接访问数据存储的虚拟驱动器。 它可以由 PS 提供程序定义或是在命令行中创建。 在命令行创建的驱动器是特定于会话的驱动器,并在会话关闭时丢失。 | |
PS集成脚本环境 (ISE) | 一个 PS 主机应用程序,使你能够运行命令并在友好、语法着色、符合 Unicode 的环境中编写、测试和调试脚本。 | |
PS模块 | 一个独立的可重用单元,使你能够对 PS 代码进行分区、组织和抽象化。 模块可以包含 cmdlet、提供程序、函数、变量和其他可作为单个单元导入的资源类型。 | |
PS提供程序 | 一个基于 Microsoft .NET Framework 的程序,用于使专用数据存储中的数据在 PS 中可用,以便你可以查看和管理它。 | |
PS脚本 | 以 PS 语言编写的脚本。 | |
PS脚本文件 | 具有 .ps1 扩展名且包含以 PS 语言编写的脚本的文件。 | |
PS管理单元 | 定义一组可以添加到 PS 环境中的 cmdlet、提供程序和 Microsoft .NET Framework 的资源。 | |
PS工作流程 | 工作流是一系列经过编程的连接步骤,会执行长期运行的任务,或是需要在多个设备或托管节点之间协调多个步骤。 PS工作流使IT专业人员和开发人员可以按工作流的形式创作多设备管理活动序列,或工作流中的单个任务。 PS 工作流使你能够调整 PS 脚本和 XAML 并将其作为工作流运行。 |