从零开始
目录

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 里完成练习。可以打字,也可以点命令按钮。

模拟实操 · PowerShell 练习纯模拟,命令不会真的执行

    可以直接打字,也可以点上面的命令按钮把命令填进去,再按回车(或点“运行”)。↑ 键翻出上一条命令。输入 help 看看支持哪些命令。

    小结

    • PowerShell 是 Windows 的命令行;管理员模式只在改系统设置时用。
    • 常用:Get-Location(pwd)、Get-ChildItem(ls)、Set-Location(cd)、Copy-Item(cp)。
    • 不会就 Get-Help 命令名。
    • 脚本运行不了是执行策略默认禁止,需要时只为当前用户放宽到 RemoteSigned。

    参考资料

    1. [1]Starting Windows PowerShell · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell
    2. [2]What is Windows Terminal? · Microsoft Learn
      https://learn.microsoft.com/en-us/windows/terminal/
    3. [3]Get-ChildItem · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem
    4. [4]Using aliases · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/scripting/learn/shell/using-aliases
    5. [5]Set-Location · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-location
    6. [6]Copy-Item · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-item
    7. [7]Get-Help · Microsoft Learn
      https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/get-help
    8. [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