02 · 操作系统 · Windows
PowerShell 入门
本篇你将学到
- 什么是命令行,怎么打开 PowerShell,什么是“管理员模式”
- 最常用的几条命令:看位置、列文件、换文件夹、复制
- 不会用的时候怎么查帮助
- 为什么运行脚本会报错(执行策略)
命令行是什么
平时我们用鼠标点图标、拖文件,这叫图形界面。命令行是另一种用法:打字告诉电脑做什么。就像点外卖:图形界面是在菜单上点图片,命令行是直接对店员说“一份宫保鸡丁,不要葱”。一开始不习惯,熟了以后又快又准,还能把一串操作写成脚本自动执行。
PowerShell 是 Windows 自带的命令行工具。它的命令大多是“动词-名词”的形式,比如 Get-ChildItem(获取子项),读起来像英语。
打开 PowerShell
- 普通模式:点“开始”,输入
Windows PowerShell,点它[1]。也可以用 Windows 终端:它是一个可以同时打开 PowerShell、命令提示符等工具的窗口程序[2]。 - 管理员模式:同样搜到 Windows PowerShell,选“以管理员身份运行”[1]。修改整个系统的设置时才需要它。
管理员模式权限很大,命令敲错了影响也大。平时用普通模式,看不懂的命令别复制来运行。
打开后会看到类似 PS C:\Users\xiaoming> 的提示符:意思是“我现在在 C:\Users\xiaoming 这个文件夹里,请下命令”。
常用命令
| 命令 | 作用 | 简写(别名) |
|---|---|---|
Get-Location |
显示当前在哪个文件夹 | pwd |
Get-ChildItem |
列出文件夹里的东西[3] | ls、dir、gci[4] |
Set-Location 文件夹 |
进入某个文件夹[5] | cd[4] |
Copy-Item 源 目标 |
复制文件或文件夹[6] | cp、copy[4] |
Move-Item 源 目标 |
移动或改名 | mv、move |
Remove-Item 文件 |
删除(不进回收站) | rm、del |
别名就是命令的简称[4]。所以在 PowerShell 里敲 ls、cd 也能用,和 macOS、Linux 的习惯差不多。
几个路径小知识:
..表示“上一层文件夹”,cd ..就是往上走一层;~表示你的家目录(C:\Users\你的用户名),cd ~回家;- 文件名里有空格时,用引号括起来:
cd "My Files"。
不会就问:Get-Help
Get-Help 显示命令的说明[7]:
Get-Help Copy-Item:看 Copy-Item 怎么用;Get-Help Copy-Item -Examples:只看例子;Get-Help Copy-Item -Online:在浏览器里打开网页版说明[7]。
第一次用可能提示帮助文件不全,可以用管理员模式运行 Update-Help 下载完整帮助[7]。
执行策略:为什么脚本运行不了
把一串命令存进一个 .ps1 文件,就是 PowerShell 脚本。第一次运行,多半会看到红字:“……因为在此系统上禁止运行脚本”。
这是执行策略在起作用。Windows 电脑上自带的 Windows PowerShell,默认策略是 Restricted:可以一条条敲命令,但不能运行脚本文件[8]。它像一道“防手滑”的门,帮你避免不小心运行了来路不明的脚本;微软也说明它不是严格的安全边界[8]。
如果确实要运行自己信任的脚本,可以只为自己(当前用户)放宽到 RemoteSigned,这样本机写的脚本能运行,网上下载的脚本需要可信的签名[8]:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
不加 -Scope CurrentUser 的话,改的是整台电脑的设置,需要用管理员模式打开 PowerShell[8]。
网上教程让你“先运行一下这个脚本”时,先弄清它是干什么的。来路不明的脚本,不运行。
动手模拟
在模拟的 PowerShell 里完成练习。可以打字,也可以点命令按钮。
可以直接打字,也可以点上面的命令按钮把命令填进去,再按回车(或点“运行”)。↑ 键翻出上一条命令。输入 help 看看支持哪些命令。
小结
- PowerShell 是 Windows 的命令行;管理员模式只在改系统设置时用。
- 常用:
Get-Location(pwd)、Get-ChildItem(ls)、Set-Location(cd)、Copy-Item(cp)。 - 不会就
Get-Help 命令名。 - 脚本运行不了是执行策略默认禁止,需要时只为当前用户放宽到 RemoteSigned。
参考资料
- [1]Starting Windows PowerShell · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell - [2]What is Windows Terminal? · Microsoft Learn
https://learn.microsoft.com/en-us/windows/terminal/ - [3]Get-ChildItem · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem - [4]Using aliases · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/scripting/learn/shell/using-aliases - [5]Set-Location · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-location - [6]Copy-Item · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-item - [7]Get-Help · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/get-help - [8]about_Execution_Policies(Windows PowerShell 5.1) · Microsoft Learn
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1