当前位置: 首页 > news >正文

什么是PowerShell?Windows自带的“超级命令行”全面介绍

前言

很多Windows用户用过CMD(命令提示符),但未必知道系统里还藏着一个更强大的“命令行神器”——PowerShell。它能做哪些CMD做不到的事?为什么有人说它像Linux终端?这篇文章为你完整介绍PowerShell。

目录

一、PowerShell是什么?

二、PowerShell的诞生背景(简史)

1. 为什么微软要做PowerShell?

2. 发展里程碑

三、PowerShell的核心特性(这才是重点)

1. 一切皆对象,管道传递对象

2. 统一的命令命名规范:动词-名词(Verb-Noun)

3. 可以像访问文件系统一样访问其他系统组件

4. 强大的脚本语言和自动化能力

5. 别名系统:兼容Linux/CMD习惯

四、PowerShell与CMD、WSL的区别(一图看懂)

五、我应该学PowerShell吗?(适用场景)

1. 非常适合以下人群

2. 一个小例子:批量重命名照片

六、如何开始学习/使用PowerShell?

1. 打开方式

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-Noun)

PowerShell的所有原生命令(叫Cmdlet,读作“command-let”)都遵循动词-名词格式,英语阅读友好

动词名词Cmdlet作用
GetProcessGet-Process获取进程
StopProcessStop-Process停止进程
GetServiceGet-Service获取服务
SetLocationSet-Location设置当前目录(相当于cd
GetChildItemGet-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 = "张三"

  • 条件判断(ifswitch

  • 循环(foreachwhile

  • 函数、错误处理(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-ChildItemLinux
pwdGet-LocationLinux
catGet-ContentLinux
dirGet-ChildItemCMD
cdSet-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”格式 $i=1 Get-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName ("假期_{0:D3}.jpg" -f $i++) }

这种任务在CMD里要写好长一串,PowerShell只需几行。


六、如何开始学习/使用PowerShell?

1. 打开方式

  • Win + R,输入powershell,回车。

  • 或者右键“开始”菜单,选择“Windows PowerShell”或“终端”。

2. 常用命令入门

想做什么命令示例
查看帮助Get-Help Get-Process
查看当前目录Get-Location(或pwd
列出文件Get-ChildItem(或ls
查看进程Get-Process
查看服务Get-Service
查看命令历史Get-History

3. 升级到最新版
Windows 10/11自带PowerShell 5.1,建议从GitHub安装PowerShell 7(跨平台版),体验更佳。


总结

问题答案
PowerShell是CMD的升级版吗?不完全是,它是完全重写的现代化Shell,与CMD不是同一个东西。
为什么能敲lspwd内置了Linux风格别名,方便跨平台用户,但背后执行的仍是Windows原生Cmdlet。
它比CMD强在哪?对象管道、统一命令命名、访问注册表/证书、强大的脚本能力。
能代替CMD吗?绝大多数场景可以,而且更高效。CMD保留主要为了兼容老脚本。

一句话记住PowerShell

一个面向对象的、能像处理文件一样处理系统组件的、跨平台的现代化命令行和脚本环境。

如果你之前只知道CMD,那么从今天起,可以试着把powershell当作默认终端了。你会发现,Windows的命令行世界原来可以这么强大。


演示:在PowerShell里输入Get-Alias,看看有多少你熟悉的“老朋友”~

http://www.cnnetsun.cn/news/2924491.html

相关文章:

  • MPC8260 ATM控制器与AAL1 CES:从寄存器配置到系统集成的深度实践
  • 如何彻底禁用Cursor自动更新:终极解决方案指南
  • 图像超分辨率重建避坑指南:IBP算法在Matlab里参数怎么调?效果不好怎么办?
  • Horizon-GS 部署全攻略:从数据集下载到三维重建实战
  • 函数返回值、变量作用域、global关键字深度拆解
  • 终极Git可视化工具:GitAhead让你的版本控制一目了然
  • Linux 进程管理与 OOM Killer 调优:从被动杀进程到主动内存治理
  • 如何永久保存你的微信记忆?WeChatMsg让聊天记录成为珍贵数字资产
  • 13ft Ladder终极指南:三步轻松绕过任何付费墙,免费阅读所有付费文章
  • 086、Claude Code 无头模式:在 CI/CD 流水线中的 headless 使用与参数配置
  • Claude 进军化学领域:NMR 预测和解析表现亮眼,助力化学家提升工作效率
  • MAA明日方舟助手:一键解放双手的智能游戏伴侣,让日常任务自动化完成
  • MPC185安全协处理器:动态描述符与加密通道机制深度解析
  • 杰理之PC模式连接部分老的笔记本会识别不了【篇】
  • Web鲜牛奶订购系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Python PDF处理神器pypdf:从安装到实战的完整指南
  • GEE新手避坑指南:LandSat8 C1/C2、T1/T2/RT、原始影像与地表反射率到底怎么选?
  • ShardingSphere实战:用JMeter压测Sharding-JDBC和Proxy,这几点性能损耗你得知道
  • 视觉中国向港交所递交H股上市申请
  • 360Controller实战指南:在macOS上完美使用Xbox控制器的完整方案
  • Platinum-MD:让尘封的MiniDisc音乐库在Windows、macOS、Linux三大平台重获新生
  • 如何快速掌握AsrTools:面向新手的终极语音转文字工具完整指南
  • 如何快速掌握Pine Script:从零基础到自动化交易的完整指南
  • 3分钟掌握Maid:你的移动AI助手如何一键部署本地大语言模型
  • 后端基础能力成长:从实习到落地的四个关键跃迁
  • 《星源纪》七境心法拆解:修心+成事终极操作手册
  • 终极免费资源嗅探:3分钟掌握猫抓Cat-Catch浏览器扩展的完整使用指南
  • 数据库索引设计的‘遗传学’:避免‘近亲’查询与利用‘杂交’优势提升性能
  • 从Kinect到iPhone:聊聊TOF、结构光这些深度相机技术,是怎么一步步走进我们生活的
  • NSK超重载滚珠丝杠W5020SS技术规格详解