PowerShell 手册
记录一些常见的 Powershell
的使用问题
别名命令
在使用 Linux 系统时,我喜欢使用 ll
命令来查看当前目录的文件,但是 Windows 系统的 Powershell 没有这个命令,所以每次用的时候就很不习惯。我们可以通过对命令设置别名来让 Powershell 支持我们的使用习惯。
查看别名
Get-Alias
或者 gal
命令来查看我们系统命令的别名,如下
1 | PS C:\Users\fuyongde> get-alias |
- 查看某别名的原命令,如
ls
的原命令:Get-Alias ls
- 查看某原命令的别名,如
Get-ChildItem
的别名:Get-Alias -Definition Get-ChildItem
临时创建或更改别名
使用 Set-Alias
命令来创建或更改别名,但是改命令只在当前的的 PowerShell Session 中生效。另外还有一个 New-Alias
命令用法类似。
创建不带参数的别名
1 | PS C:\Users\fuyongde> Set-Alias -Name ll -Value get-childitem |
创建带参数的别名
如果命令带参数如想为 Get-ChildItem -Name
设定别名为 ll
则我们需要两步,第一步为这个带参数原命令设定一个中间 function
,第二步为这个 function
指定别名
1 | PS C:\Users\fuyongde> function getlist {Get-ChildItem -Name} |
创建永久的别名
在 PowerShell 中直接使用 Set-Alias
或 New-Alias
命令创建的别名在关闭此 Session 后即会失效,防止此现象的方法是将此命令写入 Windows PowerShell profile 文件。
查看此文件在计算机中的位置:
1 | PS C:\Users\fuyongde> $profile |
结果如下:
C:\Users\fuyongde\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
但如果安装了 PowerShell6
的话,则结果是:
C:\Users\fuyongde\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
打开对应文件,并写入要预设的别名
1 | Set-Alias ll get-childitem |
注意:该种方式有可能会遇到系统上禁止运行脚本的提示,这是因为 PowerShell 对安全做过充分考量,把脚本的执行分成了几个策略。以下是常用的执行策略:
Restricted
:禁止运行任何脚本和配置文件,默认情况下就是该策略。AllSigned
:可以运行脚本,但要求所有脚本和配置文件由可信任的发布者签名,包括在本地计算机编写的脚本。RemoteSigned
:可以运行脚本,但要求从网络上下载的脚本和配置由可信任的发布者签名,不要求对已经运行和在本地计算机编写的脚本进行签名。Unrestricted
:可以运行未签名的脚本,这种策略也是最危险的。
通过 Get-ExecutionPolicy
命令可查看当前配置的执行策略,通过管理员运行 PowerShell 并执行 Set-ExecutionPolicy RemoteSigned
可更改执行策略。
删除别名
使用 Remove-Item alias
命令删除已设定的别名。
如删除别名 ll :
1 | PS C:\Users\fuyongde> Remove-Item alias:\ll |
环境变量命令
切换 PowerShell 的 page 为 UTF-8 代码页
在最新版本的 windows 操作系统中,powershell 默认的代码页已经是 UTF-8 字符集的代码页了。常见的代码页如下:
65001
:UTF-8 代码页950
:繁体中文936
:简体中文默认的 GBK437
:MS-DOS 美国英语
命令如下:
1 | chcp 65001 |
Modules 管理
安装 Module
使用 Install-Module
命令来安装 Module,其支持的参数有很多,具体可以查看官方文档,这里我们只列举最常用的参数的使用方法:
1 | # 为当前用户安装 posh-git 模块 |
查找 Module
使用 Find-Module
命令可以来查找 Module,其支持的参数有很多,具体可以查看官方文档,这里我们只列举最常用的参数的使用方法:
1 | # 查找名称为 PowerShellGet 的 Module |
查看已经安装的 Modules
1 | # 查看已经安装的所有的 Modules |
更新已经安装的 Modules
使用 Install-Module
命令来安装 Module,其支持的参数有很多,具体可以查看官方文档,这里我们只列举最常用的参数的使用方法:
1 | # 以 post-git 为例,使用 Update-Module 来更新安装的 posh-git 版本 |
卸载 Module
使用 Uninstall-Module
命令可以来卸载 Module,其支持的参数有很多,具体可以查看官方文档,这里我们只列举最常用的参数的使用方法:
1 | # 卸载指定名称的模块 |
美化
PowerShell 原始的界面是非常丑的,我们可以通过安装一些 modules 来进行美化,网上有很多博客介绍如何美化 PowerShell,但是大部分都没有介绍每个 module 的作用。
oh-my-posh
A prompt theme engine for any shell.
从介绍中可以看出 oh-my-posh 是为任何 shell 提供的一套主题引擎,这个是美化 PowerShell 的关键,具体更多的文档可以查阅官网。
安装 oh-my-posh
最新版本的 oh-my-posh 已经作为一个独立的应用来安装了(旧版本是作为 PowerShell 的一个 Module 来进行安装的),这里我们使用 winget 命令来安装最新版本的 oh-my-posh ,安装命令如下:
1 | winget install JanDeDobbeleer.OhMyPosh -s winget |
安装完成之后,需要将 oh-my-posh 添加到环境变量的 path 里面
1 | $env:Path += ";C:\Users\user\AppData\Local\Programs\oh-my-posh\bin" |
启用 oh-my-posh
安装 oh-my-posh 之后,并不会直接启用,跟上文创建别名的方法一样,在 Windows PowerShell profile 文件中启用即可。通过 notepad $PROFILE
命令,打开 Windows PowerShell profile 文件,在文件中添加如下内容:
1 | # 使用 oh-my-posh 来初始化 powershell |
部分主题乱码问题
由于一些 oh-my-posh 中用到了一些特殊的字符,需要对应的终端更换为支持这种特殊字符的字体,可以在nerdfonts 网站下载自己喜欢的字体,个人推荐 CaskaydiaMono Nerd Font Mono
这个字体。
posh-git
posh-git 用于在 shell 上提示 git 的一些信息,其安装、更新、卸载过程跟其他的 PowerShell modules 一致。这里只列举安装命令:
1 | Install-Module posh-git -Scope CurrentUser |
启用 posh-git
安装 posh-git 之后,并不会直接启用,跟上文创建别名的方法一样,在 Windows PowerShell profile 文件中启用即可。通过 notepad $PROFILE
命令,打开 Windows PowerShell profile 文件,在文件中添加如下内容:
1 | # 引入 oh-my-posh 模块 |
PSReadLine
PSReadLine 在 PowerShell 控制台中提供改进的命令行编辑体验。具体说明可参考其官方文档。
安装 PSReadLine
1 | # 需要注意的是:由于最新的 windows 版本自带了 PSReadLine,但是其版本较低,无法启用跟 oh-my-posh 配合的功能,故我们采用为当前用户强制安装新版本的方式 |
启用 PSReadLine
安装 PSReadLine 之后,并不会直接启用,跟上文创建别名的方法一样,在 Windows PowerShell profile 文件中启用即可。通过 notepad $PROFILE
命令,打开 Windows PowerShell profile 文件,在文件中添加如下内容:
1 | # 引入 PSReadLine 模块 |