前言很多Windows用户用过CMD命令提示符但未必知道系统里还藏着一个更强大的“命令行神器”——PowerShell。它能做哪些CMD做不到的事为什么有人说它像Linux终端这篇文章为你完整介绍PowerShell。目录一、PowerShell是什么二、PowerShell的诞生背景简史1. 为什么微软要做PowerShell2. 发展里程碑三、PowerShell的核心特性这才是重点1. 一切皆对象管道传递对象2. 统一的命令命名规范动词-名词Verb-Noun3. 可以像访问文件系统一样访问其他系统组件4. 强大的脚本语言和自动化能力5. 别名系统兼容Linux/CMD习惯四、PowerShell与CMD、WSL的区别一图看懂五、我应该学PowerShell吗适用场景1. 非常适合以下人群2. 一个小例子批量重命名照片六、如何开始学习/使用PowerShell1. 打开方式2. 常用命令入门3. 升级到最新版Windows 10/11自带PowerShell 5.1建议从GitHub安装PowerShell 7跨平台版体验更佳。总结演示在PowerShell里输入 Get-Alias看看有多少你熟悉的“老朋友”一、PowerShell是什么PowerShell是微软开发的一款跨平台命令行Shell和脚本语言。它于2006年首次发布内置在Windows 7及之后的所有Windows版本中并且从2016年起开源并支持macOS和Linux。通俗地说Shell像CMD一样你可以敲命令、运行程序、管理文件。脚本语言你可以把多条命令写入.ps1脚本文件实现复杂的自动化任务。它和CMD最本质的区别在于CMD处理的是文本你看到什么管道就传什么文本。PowerShell处理的是.NET对象命令输出的不是字符串而是带有属性的对象管道传递的是对象本身。这就像一个是“传纸条”文本一个是“传Excel表格”结构化对象——后者能做的事情要多得多。二、PowerShell的诞生背景简史1. 为什么微软要做PowerShell在2000年代初期Windows系统管理员面临一个尴尬局面要管理Windows服务器主要靠图形界面点击鼠标或者CMD里有限的命令。而Linux/Unix管理员早已习惯用强大的Shell脚本批量完成配置、监控、维护。微软意识到必须为Windows打造一个现代化的命令行环境。2002年代号“Monad”的项目启动负责人是Jeffrey Snover后来被称为“PowerShell之父”。他的名言是“我们不是在写一个更好的CMD而是在解决系统管理的大问题。”2. 发展里程碑2006年PowerShell 1.0 发布面向对象管道、Cmdlet概念正式亮相。2009年Windows 7 / Server 2008 R2 开始内置PowerShell。2016年PowerShell开源发布.NET Core版PowerShell Core 6.0支持Linux/macOS。2020年后PowerShell 7 成为长期支持版本统一Windows和跨平台体验。三、PowerShell的核心特性这才是重点1. 一切皆对象管道传递对象这是PowerShell最根本的突破。例如查看进程Get-Process输出的不是一堆文字而是System.Diagnostics.Process对象的集合。你可以直接筛选、排序、操作这些对象# 找出占用内存超过100MB的进程 Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB } # 按CPU使用率排序显示前5个 Get-Process | Sort-Object CPU -Descending | Select-Object -First 5而在CMD里你必须用复杂的文本解析findstr、for循环才能勉强实现而且极易出错。2. 统一的命令命名规范动词-名词Verb-NounPowerShell的所有原生命令叫Cmdlet读作“command-let”都遵循动词-名词格式英语阅读友好动词名词Cmdlet作用GetProcessGet-Process获取进程StopProcessStop-Process停止进程GetServiceGet-Service获取服务SetLocationSet-Location设置当前目录相当于cdGetChildItemGet-ChildItem获取子项相当于ls/dir这种命名方式让你不需要死记硬背——想做什么事先想动词Get/Set/New/Remove/Start/Stop...再想名词猜个八九不离十。3. 可以像访问文件系统一样访问其他系统组件PowerShell的“提供程序”Provider模型让你能统一浏览不同类型的存储# 查看当前目录 Get-Location # 切换到注册表就像切到D盘一样 cd HKLM:\SOFTWARE\ dir # 列出注册表项 # 切换到证书存储 cd Cert:\CurrentUser\My\ dir # 列出个人证书支持的Provider包括文件系统、注册表、证书、环境变量、WSMan、Active Directory等。你可以用Get-PSProvider查看全部。4. 强大的脚本语言和自动化能力PowerShell脚本.ps1支持变量$name 张三条件判断if、switch循环foreach、while函数、错误处理try/catch、模块化。一个典型的管理脚本示例批量停止某类服务并记录日志。$services Get-Service | Where-Object { $_.Name -like spool* } foreach ($svc in $services) { Stop-Service $svc.Name -Force Write-Host 已停止: $($svc.Name) }5. 别名系统兼容Linux/CMD习惯这就是为什么你会觉得“像切换到Linux”。PowerShell为常用Cmdlet提供了短别名方便不同背景的用户别名真正的Cmdlet来源lsGet-ChildItemLinuxpwdGet-LocationLinuxcatGet-ContentLinuxdirGet-ChildItemCMDcdSet-Location通用psGet-ProcessLinux注意这些别名只是“快捷方式”不是真的Linux命令。你可以用Get-Alias ls验证。四、PowerShell与CMD、WSL的区别一图看懂特性CMDPowerShellWSL处理数据文本.NET对象Linux内核环境默认命令dir,copy,delGet-ChildItem,Copy-Item,Remove-Itemls,cp,rm真正的Linux工具脚本扩展名.bat.ps1.sh或任何Linux脚本访问注册表通过reg命令直接cd进注册表需要额外工具跨平台仅WindowsWindows macOS Linux仅Windows宿主Linux内核结论CMD老式兼容日常简单命令还能用。PowerShell现代、强大、跨平台适合管理和自动化。WSL需要真正运行Linux二进制程序时用比如编译Linux内核、运行Docker原生Linux容器。五、我应该学PowerShell吗适用场景1.非常适合以下人群Windows系统管理员管理AD、IIS、Hyper-V、Exchange等官方大量提供PowerShell模块。开发运维DevOps用PowerShell编写CI/CD脚本、配置管理配合DSC。数据分析师/科学家PowerShell可以处理CSV/JSON/XML调用REST API。想提升工作效率的普通用户批量重命名文件、自动备份、监控系统状态。2.一个小例子批量重命名照片# 把当前目录所有.jpg文件改成“假期_001.jpg”格式 $i1 Get-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName (假期_{0:D3}.jpg -f $i) }这种任务在CMD里要写好长一串PowerShell只需几行。六、如何开始学习/使用PowerShell1. 打开方式按Win R输入powershell回车。或者右键“开始”菜单选择“Windows PowerShell”或“终端”。2. 常用命令入门想做什么命令示例查看帮助Get-Help Get-Process查看当前目录Get-Location或pwd列出文件Get-ChildItem或ls查看进程Get-Process查看服务Get-Service查看命令历史Get-History3. 升级到最新版Windows 10/11自带PowerShell 5.1建议从GitHub安装PowerShell 7跨平台版体验更佳。总结问题答案PowerShell是CMD的升级版吗不完全是它是完全重写的现代化Shell与CMD不是同一个东西。为什么能敲ls、pwd内置了Linux风格别名方便跨平台用户但背后执行的仍是Windows原生Cmdlet。它比CMD强在哪对象管道、统一命令命名、访问注册表/证书、强大的脚本能力。能代替CMD吗绝大多数场景可以而且更高效。CMD保留主要为了兼容老脚本。一句话记住PowerShell一个面向对象的、能像处理文件一样处理系统组件的、跨平台的现代化命令行和脚本环境。如果你之前只知道CMD那么从今天起可以试着把powershell当作默认终端了。你会发现Windows的命令行世界原来可以这么强大。演示在PowerShell里输入Get-Alias看看有多少你熟悉的“老朋友”
什么是PowerShell?Windows自带的“超级命令行”全面介绍
发布时间:2026/6/14 23:10:16
前言很多Windows用户用过CMD命令提示符但未必知道系统里还藏着一个更强大的“命令行神器”——PowerShell。它能做哪些CMD做不到的事为什么有人说它像Linux终端这篇文章为你完整介绍PowerShell。目录一、PowerShell是什么二、PowerShell的诞生背景简史1. 为什么微软要做PowerShell2. 发展里程碑三、PowerShell的核心特性这才是重点1. 一切皆对象管道传递对象2. 统一的命令命名规范动词-名词Verb-Noun3. 可以像访问文件系统一样访问其他系统组件4. 强大的脚本语言和自动化能力5. 别名系统兼容Linux/CMD习惯四、PowerShell与CMD、WSL的区别一图看懂五、我应该学PowerShell吗适用场景1. 非常适合以下人群2. 一个小例子批量重命名照片六、如何开始学习/使用PowerShell1. 打开方式2. 常用命令入门3. 升级到最新版Windows 10/11自带PowerShell 5.1建议从GitHub安装PowerShell 7跨平台版体验更佳。总结演示在PowerShell里输入 Get-Alias看看有多少你熟悉的“老朋友”一、PowerShell是什么PowerShell是微软开发的一款跨平台命令行Shell和脚本语言。它于2006年首次发布内置在Windows 7及之后的所有Windows版本中并且从2016年起开源并支持macOS和Linux。通俗地说Shell像CMD一样你可以敲命令、运行程序、管理文件。脚本语言你可以把多条命令写入.ps1脚本文件实现复杂的自动化任务。它和CMD最本质的区别在于CMD处理的是文本你看到什么管道就传什么文本。PowerShell处理的是.NET对象命令输出的不是字符串而是带有属性的对象管道传递的是对象本身。这就像一个是“传纸条”文本一个是“传Excel表格”结构化对象——后者能做的事情要多得多。二、PowerShell的诞生背景简史1. 为什么微软要做PowerShell在2000年代初期Windows系统管理员面临一个尴尬局面要管理Windows服务器主要靠图形界面点击鼠标或者CMD里有限的命令。而Linux/Unix管理员早已习惯用强大的Shell脚本批量完成配置、监控、维护。微软意识到必须为Windows打造一个现代化的命令行环境。2002年代号“Monad”的项目启动负责人是Jeffrey Snover后来被称为“PowerShell之父”。他的名言是“我们不是在写一个更好的CMD而是在解决系统管理的大问题。”2. 发展里程碑2006年PowerShell 1.0 发布面向对象管道、Cmdlet概念正式亮相。2009年Windows 7 / Server 2008 R2 开始内置PowerShell。2016年PowerShell开源发布.NET Core版PowerShell Core 6.0支持Linux/macOS。2020年后PowerShell 7 成为长期支持版本统一Windows和跨平台体验。三、PowerShell的核心特性这才是重点1. 一切皆对象管道传递对象这是PowerShell最根本的突破。例如查看进程Get-Process输出的不是一堆文字而是System.Diagnostics.Process对象的集合。你可以直接筛选、排序、操作这些对象# 找出占用内存超过100MB的进程 Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB } # 按CPU使用率排序显示前5个 Get-Process | Sort-Object CPU -Descending | Select-Object -First 5而在CMD里你必须用复杂的文本解析findstr、for循环才能勉强实现而且极易出错。2. 统一的命令命名规范动词-名词Verb-NounPowerShell的所有原生命令叫Cmdlet读作“command-let”都遵循动词-名词格式英语阅读友好动词名词Cmdlet作用GetProcessGet-Process获取进程StopProcessStop-Process停止进程GetServiceGet-Service获取服务SetLocationSet-Location设置当前目录相当于cdGetChildItemGet-ChildItem获取子项相当于ls/dir这种命名方式让你不需要死记硬背——想做什么事先想动词Get/Set/New/Remove/Start/Stop...再想名词猜个八九不离十。3. 可以像访问文件系统一样访问其他系统组件PowerShell的“提供程序”Provider模型让你能统一浏览不同类型的存储# 查看当前目录 Get-Location # 切换到注册表就像切到D盘一样 cd HKLM:\SOFTWARE\ dir # 列出注册表项 # 切换到证书存储 cd Cert:\CurrentUser\My\ dir # 列出个人证书支持的Provider包括文件系统、注册表、证书、环境变量、WSMan、Active Directory等。你可以用Get-PSProvider查看全部。4. 强大的脚本语言和自动化能力PowerShell脚本.ps1支持变量$name 张三条件判断if、switch循环foreach、while函数、错误处理try/catch、模块化。一个典型的管理脚本示例批量停止某类服务并记录日志。$services Get-Service | Where-Object { $_.Name -like spool* } foreach ($svc in $services) { Stop-Service $svc.Name -Force Write-Host 已停止: $($svc.Name) }5. 别名系统兼容Linux/CMD习惯这就是为什么你会觉得“像切换到Linux”。PowerShell为常用Cmdlet提供了短别名方便不同背景的用户别名真正的Cmdlet来源lsGet-ChildItemLinuxpwdGet-LocationLinuxcatGet-ContentLinuxdirGet-ChildItemCMDcdSet-Location通用psGet-ProcessLinux注意这些别名只是“快捷方式”不是真的Linux命令。你可以用Get-Alias ls验证。四、PowerShell与CMD、WSL的区别一图看懂特性CMDPowerShellWSL处理数据文本.NET对象Linux内核环境默认命令dir,copy,delGet-ChildItem,Copy-Item,Remove-Itemls,cp,rm真正的Linux工具脚本扩展名.bat.ps1.sh或任何Linux脚本访问注册表通过reg命令直接cd进注册表需要额外工具跨平台仅WindowsWindows macOS Linux仅Windows宿主Linux内核结论CMD老式兼容日常简单命令还能用。PowerShell现代、强大、跨平台适合管理和自动化。WSL需要真正运行Linux二进制程序时用比如编译Linux内核、运行Docker原生Linux容器。五、我应该学PowerShell吗适用场景1.非常适合以下人群Windows系统管理员管理AD、IIS、Hyper-V、Exchange等官方大量提供PowerShell模块。开发运维DevOps用PowerShell编写CI/CD脚本、配置管理配合DSC。数据分析师/科学家PowerShell可以处理CSV/JSON/XML调用REST API。想提升工作效率的普通用户批量重命名文件、自动备份、监控系统状态。2.一个小例子批量重命名照片# 把当前目录所有.jpg文件改成“假期_001.jpg”格式 $i1 Get-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName (假期_{0:D3}.jpg -f $i) }这种任务在CMD里要写好长一串PowerShell只需几行。六、如何开始学习/使用PowerShell1. 打开方式按Win R输入powershell回车。或者右键“开始”菜单选择“Windows PowerShell”或“终端”。2. 常用命令入门想做什么命令示例查看帮助Get-Help Get-Process查看当前目录Get-Location或pwd列出文件Get-ChildItem或ls查看进程Get-Process查看服务Get-Service查看命令历史Get-History3. 升级到最新版Windows 10/11自带PowerShell 5.1建议从GitHub安装PowerShell 7跨平台版体验更佳。总结问题答案PowerShell是CMD的升级版吗不完全是它是完全重写的现代化Shell与CMD不是同一个东西。为什么能敲ls、pwd内置了Linux风格别名方便跨平台用户但背后执行的仍是Windows原生Cmdlet。它比CMD强在哪对象管道、统一命令命名、访问注册表/证书、强大的脚本能力。能代替CMD吗绝大多数场景可以而且更高效。CMD保留主要为了兼容老脚本。一句话记住PowerShell一个面向对象的、能像处理文件一样处理系统组件的、跨平台的现代化命令行和脚本环境。如果你之前只知道CMD那么从今天起可以试着把powershell当作默认终端了。你会发现Windows的命令行世界原来可以这么强大。演示在PowerShell里输入Get-Alias看看有多少你熟悉的“老朋友”