Windows PowerShell 完整教程
目录
- 什么是 PowerShell?
- 为什么学习 PowerShell?
- 如何启动 PowerShell?
- PowerShell 基础语法
- 核心概念:对象与管道
- 常用核心命令
- 使用脚本:
.ps1文件 - 进阶主题
- 学习资源推荐
- 总结与最佳实践
什么是 PowerShell?
PowerShell 是一个由微软开发的,基于任务的命令行 shell 和脚本语言,它最初仅用于 Windows 系统,但现在也已开源并支持 Linux 和 macOS。

与传统 Windows CMD (命令提示符) 的最大区别在于:
- 面向对象:PowerShell 的输出不是纯文本,而是结构化的 对象,这使得数据可以被其他命令轻松处理。
- 强大且可扩展:PowerShell 拥有超过 200 个内置命令(称为 Cmdlet,发音为 "command-let"),并且可以通过安装 模块 来无限扩展功能。
- 脚本自动化:它是一种完整的编程语言,支持变量、函数、循环、条件判断等,非常适合编写自动化脚本,替代大量重复的手动操作。
PowerShell 是 Windows 系统管理的瑞士军刀。
为什么学习 PowerShell?
如果你是以下用户,学习 PowerShell 会给你带来巨大价值:
- 系统管理员/IT 运维人员:批量管理数百台服务器,自动部署软件,监控系统状态,处理日志等。
- 开发者:快速构建开发环境,自动化测试部署流程,与版本控制系统(如 Git)集成。
- 高级用户:比图形界面更快地完成系统配置任务,清理系统,优化性能。
- 安全研究员:分析恶意软件行为,进行事件响应,取证分析。
一句话总结:学会 PowerShell,你就拥有了一种直接与 Windows 内核对话的能力。

如何启动 PowerShell?
有多种方式可以启动 PowerShell,推荐使用以下几种:
-
开始菜单搜索(最简单):
- 按
Win键,输入PowerShell。 - 你会看到 "Windows PowerShell" 和 "Windows PowerShell ISE" 或 "Windows PowerShell (x86)"。
- 推荐使用 "Windows PowerShell",这是最现代的版本,ISE 是一个集成的脚本环境,适合编写和调试脚本。
- 按
-
管理员权限(非常重要):
- 在开始菜单搜索
PowerShell。 - 右键点击 "Windows PowerShell",选择 “以管理员身份运行”。
- 执行需要管理员权限的命令(如安装软件、修改系统设置)时,必须这样做。
- 在开始菜单搜索
-
运行对话框:
- 按
Win + R,输入powershell,然后按回车。
- 按
启动后,你会看到一个蓝色的窗口,提示符类似于:
PS C:\Users\YourUsername\Documents>
PowerShell 基础语法
命令结构
PowerShell 的命令遵循一个统一的格式:动词-名词,这被称为 Cmdlet。
- 动词:表示要执行的操作。
Get(获取),Set(设置),Start(启动),Stop(停止),New(新建),Remove(删除)。 - 名词:表示操作的对象。
Process(进程),Service(服务),Item(文件/目录),User(用户)。
示例:
Get-Process:获取所有进程。Stop-Service:停止服务。Get-ChildItem:获取当前目录下的子项(即文件和文件夹)。
获取帮助
PowerShell 自带一个非常强大的帮助系统,学会使用 Get-Help 是学习 PowerShell 的第一步。
Get-Help <Command-Name>:获取某个命令的基本帮助。Get-Help Get-Process
Get-Help <Command-Name> -Examples:获取命令的使用示例。Get-Help Get-Process -Examples
Get-Help <Command-Name> -Full:获取完整的帮助文档,包括参数说明。Get-Help Get-Process -Full
Update-Help:更新本地帮助文档(需要管理员权限),建议首次使用前运行一次。
常用内置变量
PowerShell 有一些自动变量,存储了常用信息:
$_或$PSItem:管道当前对象,在管道操作中,它代表正在被处理的当前对象。- 上一个命令的执行状态。
True表示成功,False表示失败。 $PID:当前 PowerShell 进程的 ID。$HOME:当前用户的主目录路径,等同于C:\Users\YourUsername。PWD:当前工作目录,等同于Get-Location。
核心概念:对象与管道
一切皆对象
这是 PowerShell 的精髓,当你运行一个命令时,它返回的不是文本,而是一个对象,这个对象包含 属性 和 方法。
- 属性:是对象的数据或特征,一个进程对象有
ProcessName,Id,CPU等属性。 - 方法:是对象可以执行的操作,一个进程对象有
Kill()方法来终止自己。
如何查看一个对象的属性和方法?
使用 Get-Member Cmdlet。
# 获取所有进程,并通过管道传递给 Get-Member Get-Process | Get-Member
你会看到输出中列出了所有进程对象的属性(如 Name, Id)和方法(如 Kill, Refresh)。
强大的管道符
管道符 是 PowerShell 的灵魂,它的作用是将 一个命令的输出 作为 另一个命令的输入。
这就像工厂的流水线,第一个工位(命令)完成加工后,直接将半成品传给下一个工位(命令),无需中间人(手动处理文本)。
经典示例:查找 CPU 占用率最高的 3 个进程
这个任务在 CMD 中几乎不可能完成,但在 PowerShell 中,一行命令就能搞定。
# 1. Get-Process: 获取所有进程对象 # 2. |: 将进程对象传递给 Sort-Object # 3. Sort-Object -Property CPU -Descending: 按 CPU 属性降序排序 # 4. |: 将排序后的结果传递给 Select-Object # 5. Select-Object -First 3: 只选择前 3 个对象 Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 3
分解理解:
Get-Process产生了一堆进程对象。Sort-Object接收这些对象,根据它们的CPU属性值进行排序。Select-Object接收排序后的对象列表,只取最前面的 3 个。
常用核心命令
文件和目录操作
Get-ChildItem(别名:ls,dir):列出目录内容。Get-ChildItem -Path C:\Windows:列出 C:\Windows 下的文件和文件夹。Get-ChildItem -Path .\*.txt:列出当前目录下所有.txt文件。
Set-Location(别名: `
