前言

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

操作系统有很多种,比如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. mybatis plus 增删改自动填充字段值

    说明 本文实现以下需求效果 创建数据时自动填充 createUserId 和 createTime 更新数据时自动填充 updateUserId 和 updateTime(每次修改都自动填充新的 up ...

  2. 115_Power Pivot之HR薪酬计算:公积金、社保、个税、实发工资相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 1.之前写了一个关于入离调转的pp应用,现在个税新增专项附加扣除项目,借此写一个关于薪酬计算的案例: 2.本案例 ...

  3. 干掉Switch-Case、If-Else----订阅发布模式+事件驱动模式

    在上位机和下位机或者服务端和客户端通信的时候,很多时候可能为了赶项目进度或者写代码方便直接使用Socket通信,传输string类型的关键字驱动对应的事件,这就有可能导致程序中存在大量的Switch- ...

  4. Stream.toList()和Collectors.toList()的性能比较

    昨天给大家介绍了Java 16中的Stream增强,可以直接通过toList()来转换成List. 主要涉及下面这几种转换方式: list.stream().toList(); list.stream ...

  5. MySQL中读页缓冲区buffer pool

    Buffer pool 我们都知道我们读取页面是需要将其从磁盘中读到内存中,然后等待CPU对数据进行处理.我们直到从磁盘中读取数据到内存的过程是十分慢的,所以我们读取的页面需要将其缓存起来,所以MyS ...

  6. IDEA windows版本快捷键

    使用本快捷键前,可以在idea使用下面方法确认版本! Ctrl 快捷键 介绍 Ctrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + Z 撤 ...

  7. 什么是Netty编解码,Netty编解码器有哪些?Protostuff怎么使用?

    哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,昨天下雨没怎么上街上 ...

  8. DirectX11 With Windows SDK--40 抗锯齿:FXAA

    前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足.但是,尝试提升采样的SSAA会增大渲染的负担:而硬件MSAA与延迟渲染又不能协同工作.为此我们可以考虑使用后处理的方式 ...

  9. 可变参数——JavaSE基础

    可变参数 方法声明中,在指定参数类型后加一个省略号...即可声明可变参数 可变参数必须是参数列表的最后一个参数 声明 public void test(int... i){ System.out.pr ...

  10. Docker的网络

    概述 docker使用Linux桥接网卡,在宿主机虚拟一个docker容器网桥(docker0),docker启动一个容器时会根 据docker网桥的网段分配给容器一个IP地址,称为Container ...