🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

PowerShell 是什么?Windows 用户必备的最强 Shell 深度解析

在之前的 Bash 入门系列中,我们主要聚焦于 macOS 和 Linux 上标配的 Bash Shell。但相信很多 Web 创作者会觉得:“我平时用的是 Windows 啊……”。请放心!Windows 系统中标准搭载了一款远超传统命令提示符(小黑窗)的超强 Shell。它就是我们这次要介绍的 PowerShell

PowerShell 不仅仅是一个命令执行工具。它是一个能将 Windows 的各种设置自动化,用几行代码就解决复杂任务的存在,堪称一根“魔法棒”。特别是在 Web 开发中管理服务器,或是在日常工作中提升效率方面,它的威力是巨大的。

本文将解答新手朋友们“PowerShell 是什么?”“它和命令提示符有什么区别?”等疑问,同时通过可直接复制粘贴运行的示例,通俗易懂地解说其基本用法和魅力。所有 Windows 用户都拥有这个最强的武器,何不从今天起就来学习驾驭它呢?


PowerShell 的真面目 - 诞生于 Windows 的最强 Shell

PowerShell 是由微软开发的,专门用于 Windows 管理和自动化的命令行 Shell,同时它也是一门脚本语言。如果说传统的命令提示符是计算器,那么 PowerShell 就像是 Excel。两者都能计算,但能处理的数据类型和能做的事情的广度完全不同。

最大的区别在于处理“对象”

命令提示符和 PowerShell 的决定性区别在于命令返回信息的“形式”。

正是这种“处理对象”的特性,使 PowerShell 从一个单纯的命令行工具,升华为一个强大的自动化平台。


体验 PowerShell 的力量!通过管道操控对象

百闻不如一见。PowerShell 的真正价值,在将命令通过“管道符 |”连接起来时才能体现出来。让我们来看看对象是如何像传送带上的物品一样,被传递给下一个命令进行加工的吧。

首先,我们用 Get-Process 命令获取当前计算机上正在运行的进程列表。PowerShell 命令的一大特点是采用了易于理解的动词-名词格式。

Get-Process

屏幕上显示了许多表格形式的进程,对吧?这就是对象的集合。


接下来,我们将这个结果通过管道传递给 Where-Object,筛选出“进程名(ProcessName)为'chrome'”的那些进程。$_ 指代的是从管道传递过来的每一个对象。

Get-Process | Where-Object { $_.ProcessName -eq 'chrome' }

只显示了与 Chrome 相关的进程。正因为处理的是对象而非文本,我们才能通过指定 ProcessName 这个属性来轻松地进行筛选。


我们再进一步,将筛选后的结果传递给 Sort-Object,按内存使用量(WS)从高到低进行排序。

Get-Process | Where-Object { $_.ProcessName -eq 'chrome' } | Sort-Object -Property WS -Descending

像这样,仅通过连接命令,就能像操作数据库一样随心所欲地提取和加工复杂信息。这就是 PowerShell 的力量。


来试试基本命令(Cmdlet)吧

PowerShell 的命令,正式名称为 Cmdlet (Command-let)。这里,我们将介绍如何用 PowerShell 的 Cmdlet 来执行那些在 Bash 或命令提示符中我们所熟悉的操作。许多 Cmdlet 都提供了简短的“别名”,所以像 lscd 这样习惯了的命令也可以直接使用。

移动位置 (pwd, cd, sl)

使用 Get-Location 查看当前位置,使用 Set-Location 进行移动。

# 显示当前位置 (别名: pwd)
Get-Location

# 移动到 C:\Users 目录 (别名: cd, sl)
Set-Location C:\Users

显示列表 (ls, dir, gci)

使用 Get-ChildItem 来显示文件和文件夹列表。

# 显示当前目录的内容 (别名: ls, dir, gci)
Get-ChildItem

发挥对象的优势,还可以轻松地递归查找(包括子文件夹内)特定类型的文件。

# 从当前位置开始搜索所有 .css 文件
Get-ChildItem -Recurse -Filter "*.css"

创建文件和文件夹 (ni)

使用 New-Item 来创建新项目(文件或文件夹)。

创建文件:

New-Item -Path ".\new-file.txt" -ItemType File

创建文件夹:

New-Item -Path ".\new-folder" -ItemType Directory

读写文件内容 (cat, gc, sc)

使用 Get-Content 读取文件内容,使用 Set-Content 写入内容。

向文件写入内容:

"Hello from PowerShell!" | Set-Content -Path ".\new-file.txt"

读取文件内容 (别名: cat, gc):

Get-Content -Path ".\new-file.txt"

删除文件和文件夹 (rm, del, rmdir)

使用 Remove-Item 来删除文件或文件夹。此操作无法撤销,执行时请务必小心。

Remove-Item -Path ".\new-file.txt"

要连同文件夹及其内容一并删除,需要 -Recurse 选项。

Remove-Item -Path ".\new-folder" -Recurse

总结

这次,我们为您打开了通往 PowerShell 世界的大门,这是 Windows 系统标准搭载的强大 Shell。起初可能会对不熟悉的 Cmdlet 感到困惑,但一旦理解了其本质,便没有比它更可靠的工具了。

在 Web 制作领域,常见的工作流程是在本地 Windows 环境中作业,然后部署到生产环境的 Linux 服务器上。如果能熟练使用 PowerShell 在 Windows 上实现工作的自动化和效率化,同时又能通过 WSL 无缝地操作 Linux 环境,那简直是如虎添翼。

希望今天的文章能让您感受到 PowerShell 的魅力和强大之处。在下一篇文章中,我们将解说如何将 PowerShell 更新到最新版本,以及在 macOS/Linux 上安装的步骤。

【新手入门】PowerShell 的安装与启动方法(Windows / Mac / Linux)