很多新手始终分不清:PowerShell 和 CMD 到底有什么区别?到底什么时候用 PowerShell?它的核心优势是什么?
本篇手册抛弃晦涩官方话术,用通俗逻辑+大量对比表格,从零讲透 PowerShell 的定义、底层逻辑、版本区别、基础命令、脚本规则、实战场景,适合零基础入门、日常运维、Windows 自动化学习收藏。
一、通俗理解:PowerShell 是什么?
1.1 核心定义(人话版)
PowerShell 是 微软推出的 Windows 高级命令行终端 + 自动化脚本工具,是 CMD 的全面升级版,同时支持命令交互、脚本编程、系统运维、批量自动化,深度依托 .NET 框架,是 Windows 官方标准运维工具。
简单类比:
CMD:老旧简易命令行,只能执行简单文本命令,功能薄弱、无编程能力。
PowerShell :现代化终端,面向对象、支持编程、支持批量自动化、可管控 Windows 全系统资源。
1.2 PowerShell 核心特点(区别于所有终端)
面向对象输出:普通终端输出纯文本,PowerShell 输出结构化对象,可直接筛选、排序、修改属性。
兼容全量 CMD 命令:CMD 能跑的命令,PowerShell 全部兼容,无缝过渡。
原生支持脚本 :后缀
.ps1,可编写循环、判断、变量、函数,实现运维自动化。跨平台新版本:PowerShell 7 支持 Windows / Mac / Linux,不再局限 Windows。
系统权限极高:可管理进程、服务、注册表、文件、网络、系统配置。
二、PowerShell 两大版本区别(必懂,新手最易混淆)
PowerShell 分为 系统自带 Windows PowerShell 5.1 和 跨平台 PowerShell 7+,二者完全不同,下表清晰区分:
| 对比维度 | Windows PowerShell 5.1 | PowerShell 7(Core) |
|---|---|---|
| 内置状态 | Win10/Win11 系统自带无需安装 | 需手动下载安装 |
| 运行程序 | powershell.exe | pwsh.exe |
| 运行平台 | 仅 Windows 平台专属 | Windows / MacOS / Linux 跨平台 |
| 底层框架 | 基于 .NET Framework(老旧框架) | 基于 .NET Core / .NET 跨平台框架 |
| 更新迭代 | 停止大版本更新,仅修复漏洞 | 持续更新,微软主力维护版本 |
| 适用场景 | Windows 本地日常运维、系统内置功能调用 | 跨平台脚本、服务器自动化、云运维 |
三、PowerShell 快速打开方式(新手速查)
| 打开方式 | 操作步骤 | 适用场景 |
|---|---|---|
| 运行窗口打开 | Win+R 输入 powershell 回车 |
快速打开普通权限终端 |
| 快捷菜单打开 | Win+X,选择 Windows PowerShell | 系统快速调用 |
| 管理员身份打开 | 开始菜单搜索 PowerShell → 右键「以管理员身份运行」 | 修改系统配置、安装软件、修改服务必备 |
| ISE 脚本编辑器 | 搜索「Windows PowerShell ISE」打开 | 编写、调试、运行 PS1 脚本 |
四、PowerShell 与 CMD 核心对比(彻底搞懂优势)
| 对比项 | CMD | PowerShell |
|---|---|---|
| 输出形式 | 纯文本字符串,无法结构化处理 | 对象格式,可直接筛选、排序、修改属性 |
| 编程能力 | 极弱,仅简单批处理,无完善语法 | 完整编程语法:变量、循环、判断、函数、数组 |
| 命令规范 | 命令杂乱无章,无统一规则 | 统一动词+名词规范,如 Get-ChildItem、Set-Service |
| 管道能力 | 文本管道,只能字符截取 | 对象管道,直接传递数据对象,精准处理 |
| 自动化能力 | 仅简单批量处理 | 支持复杂运维自动化、定时任务、批量管控 |
| 兼容性 | 仅适配老旧 Windows | 兼容 CMD 命令,同时支持跨平台 |
五、PowerShell 命令规范(核心底层逻辑)
PowerShell 所有原生命令遵循 动词-名词 统一规则,极易记忆,告别 CMD 杂乱命令。
5.1 高频通用动词对照表
| 常用动词 | 含义 | 示例命令 |
|---|---|---|
| Get | 获取、查询信息 | Get-Process(查看进程) |
| Set | 设置、修改配置 | Set-Service(修改服务状态) |
| New | 新建对象/文件/任务 | New-Item(新建文件/文件夹) |
| Remove | 删除资源 | Remove-Item(删除文件) |
| Start | 启动程序/服务 | Start-Service(启动服务) |
| Stop | 停止程序/服务 | Stop-Process(关闭进程) |
| Test | 检测、验证 | Test-Connection(ping 测试) |
六、新手必备高频命令对照表(可直接复用)
兼容 CMD 命令,同时提供 PowerShell 原生标准命令,推荐优先使用原生命令。
| 功能场景 | 兼容 CMD 命令 | PowerShell 原生标准命令 |
|---|---|---|
| 查看目录文件 | dir | Get-ChildItem |
| 切换目录 | cd | Set-Location |
| 新建文件/文件夹 | md / copy | New-Item |
| 删除文件/文件夹 | del / rd | Remove-Item |
| 查看本机进程 | tasklist | Get-Process |
| 关闭进程 | taskkill | Stop-Process |
| 查看网络配置 | ipconfig | Get-NetIPAddress |
| 网络连通测试 | ping | Test-Connection |
| 查看系统服务 | 无直接命令 | Get-Service |
七、PowerShell 脚本执行策略(新手必踩坑知识点)
Windows 默认禁止运行 PS1 脚本,目的是防止恶意脚本自动执行,新手写脚本报错基本都是这个原因。
7.1 执行策略等级对照表
| 策略级别 | 权限说明 | 适用场景 |
|---|---|---|
| Restricted(默认) | 禁止所有脚本运行,仅可执行单条命令 | 系统默认安全策略 |
| RemoteSigned | 本地编写脚本可直接运行,网络下载脚本需签名 | 个人学习、本地开发首选 |
| AllSigned | 所有脚本必须数字签名,无签名无法运行 | 企业生产环境 |
| Unrestricted | 无任何限制,所有脚本均可运行 | 临时测试,不推荐长期开启 |
7.2 常用配置命令
查看当前策略:
Get-ExecutionPolicy设置本地可运行脚本(管理员执行):
Set-ExecutionPolicy RemoteSigned
八、PowerShell 三大核心优势(彻底理解为什么要学)
| 核心优势 | 通俗解释 | 实际价值 |
|---|---|---|
| 面向对象处理数据 | 不是死板文本,是结构化数据,可直接筛选、排序、取值 | 无需复杂文本截取,运维数据处理效率翻倍 |
| 完整自动化能力 | 支持变量、循环、判断、函数,可编写复杂脚本 | 批量处理文件、启停服务、监控系统、自动运维 |
| 全系统管控能力 | 深度对接 Windows 内核、.NET、注册表、服务、云资源 | Windows 运维、服务器管理、云平台运维必备工具 |
九、PowerShell 适用场景总结
日常电脑运维:批量整理文件、清理垃圾、查看进程、关闭冗余程序
Windows 服务器运维:管理系统服务、权限、日志、定时任务
自动化脚本开发:重复性工作脚本化,解放手动操作
云运维:搭配 Azure、服务器集群实现批量管控
开发辅助:项目批量打包、文件处理、环境配置
十、新手学习路线(极简总结)
熟悉基础打开方式、区分 5.1 和 7.x 版本差异
掌握「动词-名词」命令规范,熟记高频命令
配置脚本执行策略,解决 PS1 脚本运行报错
学习变量、数组、循环、判断基础语法
练习管道筛选、数据处理、简单自动化脚本
进阶系统运维、服务器自动化、云运维场景
十一、全篇总结
-
PowerShell 是 CMD 的现代化升级版,是 Windows 官方标准命令行与自动化工具,具备完整编程能力;
-
分为系统自带 5.1 版本和跨平台 7.x 版本,日常学习优先使用 5.1,跨平台开发使用 7.x;
-
统一「动词+名词」命令规范,记忆简单、可读性强,优于传统 CMD 杂乱命令;
-
默认禁止脚本运行,修改为 RemoteSigned 即可满足本地学习开发需求;
-
核心价值在于结构化数据处理 + 自动化运维,是 Windows 运维、开发辅助的必备技能。