前言

计算机啊这东西,本质上是硬件和软件的综合体。如果只有硬件没有软件的话,这也是台辣鸡而已。而计算机软件中最靠近硬件的一层,就是操作系统层。

操作系统有很多种,比如Unix/Linux/Mac OS/Windows几种。其中,我们接触的第一款操作系统应该就是微软(巨硬)公司的windows系列了。这款操作系统从1985年发表第一款操作系统Windows1.0开始,到现在已经有将近40年的历史了。所以Windows内部也一定存在很多祖传的应用,比如Windows NT、扫雷、cmd等。

虽然Windows是一款以视窗为主要交互模式的操作系统,但是对于一个脚本佬,命令行同样重要。甚至有时命令行的交互效率比视窗的点点点更高,也更快捷方便(就比如我刚开始使用linux的shell的时候,对此非常抗拒,觉得十分难用;但是用久了就回不去了,现在整天骂Windows,为啥设计得如此不透明)。

当然啦,脚本佬毕竟是少数,大部分人还是觉得Windows的点点点更加符合自己的使用习惯。然而作为一个脚本佬,就没办法再搁那儿点点点了,这样难免被人说lowbi。于是我简单地看了一下Windows的命令行,发现有两种--黑框的cmd和篮框的powershell。那本文主要讨论这二者的异同。

cmd vs powershell

我呢,是个土包子,看到这二者的第一感觉就是,powershell是加强版的cmd。这句话说了等于没说,因为的确如此。如果这个问题是个面试题,你要这么答,很难保证面试官不会继续问下去,“请详细讲讲,这二者有啥异同”?这时候就喝喝了,你就没话可讲了,最后就得被迫回家等消息。那我们这里不废话,直接上表格:

cmd powershell
框框颜色 黑色 蓝色
起用时间 1981年 2006年
适用性 仅支持cmd脚本(bat,cmd) 支持cmd脚本(bat,cmd)和powershell脚本(ps1)
扩展性 仅支持cmd内置函数 支持cmd内置函数+powershell cmdlet
命令别名 不支持 支持
输出内容类型 对象 文本
程序并发 支持 不支持
是否有ISE(编译器) 有,而且能直接调试 无,只有命令行
是否支持.net库
是否支持WMI(监控工具)
是否可以管理微软云资源
是否支持shell
是否可以运行所有类型程序

总结

上面我总结了powershell和cmd的异同点,可以从中看到powershell是cmd的加强版,但是加强得过了头,基本上也可以作为Windows不同世代,实现命令行交互的两种方式了。其中cmd能做的事情powershell都能做,而powershell除了兼容cmd以外,也增加了几项对脚本佬更加友善的改进:

  1. 增加了cmdlet,使得很多功能可以像成熟的编程语言一样直接调用。

  2. 拉进了与linux shell的操作距离,使得学习成本大大降低。

  3. 支持了很多更友善的功能,比如ISE和WMI,操作感比cmd更先进。

  4. 增加了操作其他语言的便捷性,使得powershell通用性更好。

  5. 增加了管理其余基础资源的功能,使得我们使用vagrant或者terraform时更方便。

  6. 由于powershell本身建立在.net框架之上,所以直接可以调用,net相关功能,对于.net开发者是一种福音。

总之,它给了常年使用linux命令行方式进行作业的人(比如我这脚本佬)更好的信心去使用windows进行编程和测试,其强大的功能也令我叹为观止。只能说I need more 抛瓦烧,微软巨硬,魔兽该出新资料片啦!

鸣谢

PowerShell vs Command Prompt | Top 14 Differences You Should Know

https://www.yiibai.com/powershell/powershell-cmdlet.html

https://zhuanlan.zhihu.com/p/380068863

powershell和cmd对比的更多相关文章

  1. 【转】PowerShell入门(二):PowerShell是Cmd命令行的加强版吗?

    转至:http://www.cnblogs.com/ceachy/archive/2013/01/31/PowerShell_vs_Cmd.html PowerShell是命令行的加强版吗?Power ...

  2. powershell和cmd区别

    Powershell是cmd的超集,换句话说,cmd能做的事情,Powershell都能做,但是Powershell还能额外做许多cmd不能做的活. 主要是系统管理功能.脚本语言和在线帮助更强大,你确 ...

  3. Windows 系统PowerShell或cmd设置添加静态路由方式

    电脑上添加静态路由,PowerShell或cmd设置路由 方法/步骤1.首先以管理员身份在“运行”窗口输入cmd或PowerShell(按WIN+R打开运行窗口),然后回车进入命令行,输入 route ...

  4. PowerShell与CMD在路径解析上的一点不同

    对于路径含有空格的文件夹,在加入PATH环境变量时,前后往往会加上引号.这种情况,CMD可以正确识别:但是Powershell却不能加上引号,否则无法定位路径. 例如,在PS中,$env:path查看 ...

  5. PowerShell运行cmd命令

    1.使用.exe扩展名 2.使用 cmd /c "" 3.在 PowerShell v3 中有另一种选择来解决这个问题,只需在命令行的任意位置添加 –% 序列(两个短划线和一个百分 ...

  6. 2 Powershell与Cmd以及Unix/Linux Shell

    上篇文章我说道,windows为了改变用户对其console界面的诟病,于是就从windows   vista开始,计划要改变这种局面,于是就有 了Powershell的出现. 1.兼容shell命令 ...

  7. Turn Off Windows Firewall Using PowerShell and CMD

    If you want to turn off the Windows Firewall, there are three methods. One is using the GUI which is ...

  8. win10 cmd 替换 powershell

    打开注册表编辑器,定位至: \HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command cmd:  cmd.exe /s /k p ...

  9. 【190】修改 PowerShell & CMD 显示字体

    方法一:Windows7更改替换cmd(powershell)字体完全方法教程 说明:该方法将字体修改成只能显示英文,对于某些中文会乱码!(chcp 850) 方法二:添加中文字体(chcp 936) ...

随机推荐

  1. 零基础学Java第三节(基本输入输出)

    本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...

  2. break、continue、return中选择一个,我们结束掉它

      在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break.continue.reture三个关键字都可以结束循环,我们看下他们 ...

  3. node包的降版本

    1.安装版本更高的node包直接到官网去安装. 2.从版本高的node包,降低到版本低的node包. 要先卸载现在的node包,在菜单栏中可以删除. 然后通过https://nodejs.org/zh ...

  4. 通过一次生产case深入理解tomcat线程池

    最近生产上遇到一个case,终于想明白了原因,今天周末来整理一下 生产case 最近测试istio mesh的预热功能(调用端最小连接数原则) 来控制调用端进入k8s刚扩出来的容器的流量 因为刚启动的 ...

  5. 测试平台系列(95) 前置条件支持简单的python脚本

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节我们构思了一下怎么去支 ...

  6. 论文阅读 Dynamic Network Embedding by Modeling Triadic Closure Process

    3 Dynamic Network Embedding by Modeling Triadic Closure Process link:https://scholar.google.com.sg/s ...

  7. JNPF移动办公解决方案

    市场背景 随着办公自动化系统的普及,电子化.数据化的办公方式已进入越来越多的企业和政府单位,信息化的办公系统在企事业内部编织起一套高效.畅通的信息互联体系,极大推动了企事业单位生产力的发展.但与此同时 ...

  8. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  9. java提前工作、第一个程序

    java提前工作 我们学习编程肯定会 运用到相应的软件 在这里 我个人推荐 eclipse.idea 这里的软件呢 都是用我们的java编程出来的,那它也需要用java来支持他的开发环境 这里就运用到 ...

  10. php 二维数组转换一维数组

    $result = array_reduce($res, function ($result, $value) { return array_merge($result, array_values($ ...