powershell比cmd更强大吗,有cmd为什么还做ps

306 次阅读

本文最后更新于 2026年5月30日。

一句话结论:

CMD 是老旧 DOS 遗留壳,只适合简单命令;PowerShell 是 .NET 全平台脚本语言,Windows 官方下一代终端,功能碾压 CMD。

一、为什么微软放着 CMD 不用,重做 PowerShell

1.CMD 先天局限(硬伤改不了)

  1. 语法是30年前DOS产物
    del /f /s /q、xcopy、for /f 参数杂乱无章,各家命令参数规则不统一。
  2. 只处理文本
    CMD所有命令输出都是纯字符串,筛选文件、取磁盘容量、查进程只能靠截取文本,极易出错。

例:CMD拿C盘剩余空间,要手动字节换算GB,写一堆截取字符代码。

  1. 没有正规面向对象、数组、函数
    批量运维AD、服务器、磁盘、注册表很难写。

2.PowerShell 核心优势(设计思路完全不同)

① 传递【对象】而不是文本(最大质变)

CMD:命令输出=一段文字,靠切字符串拿数据
PowerShell:命令输出=.NET对象,自带属性(大小、日期、路径、占用)

# 直接拿C盘剩余GB,不用算字节
(Get-PSDrive C).Free

② 统一动词+名词规范,记命令极简单

固定格式:动词-名词
Get-获取、Set-修改、Remove-删除、New-新建

Get-ChildItem 查看文件
Remove-Item  删除文件
Get-Process  查看进程

不用记乱七八糟 /s /f /q 这类零散参数。

③ 完整编程语言

  • 原生循环、判断、数组、自定义函数、异常捕获
  • 可读写注册表、WMI、AD域、Exchange、Azure云、Windows服务
    企业运维批量管理几百台Windows服务器全靠PS,CMD做不到。

④ 跨平台

PowerShell Core 开源,Windows/Linux/macOS 通用,CMD仅限Windows。

二、日常使用场景对比

场景1:清理temp

  • CMD:del /f /s /q %temp%\* 记一堆参数
  • PS:Remove-Item $env:temp\* -Recurse -Force 参数表意清晰

场景2:筛选大于1GB的文件

CMD:需要for+findstr+字符截取,几十行易错代码
PS:

Get-ChildItem C:\ -Recurse | Where-Object {$_.Length -gt 1GB}

三、现状

  1. CMD不会被删除:兼容几十年老批处理脚本、老旧小工具,日常偶尔用。
  2. 微软主推PowerShell:系统设置、存储、安全、服务器运维、自动化脚本官方全给PS接口。
  3. 新版终端:Windows Terminal:同时支持CMD/PowerShell/WSL,PS是主力。

简单总结

  • CMD = 简易老式命令框(日常删文件、开软件够用)
  • PowerShell = Windows原生高级编程语言(自动化、运维、深度系统管理必备)