cmd和powershell的区别

简单来说,powershell可以看做是cmd的加强版,但由于内核机制不同导致不完全兼容。

一、从时间线上来说

cmd即command的简写,最早可以追溯到windows2003系统。在windows2003之前的windows98、95都得完整输入command才能调出命令行。如果再追溯,甚至可以说是早期Dos系统的遗留。

powershell 1.0在2006年首次发布,并在2016年在github上进行了开源。powershell是基于.NET技术开发的全新脚本语言,从 Windows7 开始 PowerShell 就已经内置到了系统里,但貌似直到 Windows10 才开始逐渐走入普通用户的视野。

二、从技术角度来说

cmd只能运行win命令,而powershell除了win命令之外,还可以运行专门为powershell设计的cmdlet命令。

cmd和powershell只是形似,内核架构以及运行机制完全不一样。cmd是把字符串当作命令执行,powershell就是操作.NET对象,在语法上比起cmd规范了许多。

比如一个简单的“改变当前工作目录”cd指令。cmd是通过调用固定的指令集完成操作,而powershell里的cd仅仅是Set-Location的别名,这里的cd实际上是通过Set-Location使用cmdlet来解析路径,通过.NET规范的路径格式和变量来改变文件路径。

cmd和powershell只是某些内置的命令别名和极个语法相似,让他们看起来好像有那么些联系而已。

三、从使用性上来说

cmd是直接面向底层的指令读取,因此速度超级快,你永远不知道客户的老电脑启动powershell要等多久(甚至部分老电脑都没有装powershell),但是cmd永远是秒开。

powershell其实可以视为是一个.NET的前端,有一套丰富的变量指令集,丰富了调度层的命令架构,提升了较强的扩展性,语法规则也更符合现代主流编程语言的风格。powershell可以直接创建一个.Net支持的对象,包括但不限于窗口、进程、数据结构、基础数据类型、计时器等,并且能将脚本导出为exe,因而可以看做是一个写起来麻烦,但却脱离 Visual Studio 的 .Net 开发环境。并且微软为了干掉cmd这个老古董,不惜代价把一些cmd指令逻辑进行了递归(比如上面为了照顾用户习惯cd,在powershell里cd就会直接导到Set-Location)。

虽然powershell可以看做是cmd的加强版,但也不是完全兼容。比如有cmd的“创建文件链接”指令mklink在powershell里不能用。这是因为powershell里需要用New-Item这样的cmdlet命令创建文件链接。

但是微软历年的统计表示,cmd的使用率永远高于powershell。这是因为对于熟悉了Dos系统的老程序员来说,cmd用的更顺手,也更能照顾到远古机型。而新程序员写脚本,为什么不用python或者js?

所以powershell的处境就很尴尬,简单的命令不如cmd快捷,复杂的脚本功能不如python/js。虽然powershell的扩展性比cmd强,但是复杂度也比cmd高,带来的学习成本也比cmd大。那既然都要学习一门新的语言,干脆学python/js好了。

从powershell 7.0开始,可以在Windows、Linux和macOS上跨平台使用了。但是原来的 5.1 只能管理windows 平台,这两个powershell还是有差异的。powershell 7.0 需要另外安装。理论上5.1 不会再更新升级了。

四、小技巧

1. 许多用户觉得在运行搜索框中打“cmd”三个字母比“powershell”便捷许多。微软为了提高powershell的使用率,干掉cmd,在win11版本中,只需要搜索“wt”两个字母即windows terminal的首字母即可打开powershell。

2. 很多学校的机房管理软件只会禁cmd而忽略powershell,所以你可以试着用powershell搞点小花招返回桌面玩游戏什么的。

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值