论CMD、.NET、PowerShell、cmdlet四者关系
一、.NET
.NET Core是用C#和C++编写的,并采用MIT协议作为开源协议。
框架(Framework)意思是框架、机制、准则。可以举个例子给你。
自己设计一个Words软件,来编辑一篇文字。
首先需要考虑版面设计:字体大小,行间距等。
现在有这个一个工具,Words,可以通过它来达到你的需求,它相当于一种框架。
.NET也如此——开发框架。
.NET 拥有极其强大的功能,包括文件操作、网络通信、数据处理、图形界面等,但这些功能主要通过 C#、VB.NET 等编程语言来调用,门槛较高。
二、.NET与PowerShell的关系
.NET | PowerShell | |
本质 | 软件开发框架和平台 | 脚本语言、命令行外壳、自动化工具 |
核心 | 公共语言运行时 (CLR) 和类库 | 命令处理器和脚本引擎 |
语法 | C#, F#, VB.NET 等编程语言 | PowerShell 自己的脚本语法 |
执行模式 | 编译成程序集后执行 | 交互式命令行或解释执行脚本 |
主要用户 | 软件开发人员 | 系统管理员、 DevOps 工程师、IT 专业人员 |
输出 | 通常是完整的应用程序(exe, dll) | 文本、对象、自动化任务的结果 |
关系 | 提供底层动力和能力 一个软件开发平台,提供了一个庞大的类库(Base Class Library, BCL) 和一个用于执行编译后代码的运行时环境(Common Language Runtime - CLR)。 | 消费和暴露 .NET 的能力 构建在 .NET 运行时之上的一个应用程序 |
用途 | 用于开发的独立应用程序(Web应用、桌面软件、API服务) | 1、交互命令行(like CMD、Bash) 2、脚本自动化 3、系统管理 |
三、CMD
CMD Shell是最早内置于Windows的Shell——执行Windows命令(only),执行批处理文件(老旧的DOS继承产物,功能有限)
返回“string”
四、PowerShell
是什么:人机交互,自动化IT操作环境。
PowerShell——扩展CMD Shell的功能,可以运行cmdlet(command let:由.NET库编写的,命名规范:动词-名词)的PowerShell命令
powershell有脚本文件扩展,可以运行win命令、cmdlet命令,是一个完整的脚本语言运行环境。
PowerShell 的核心价值在于它“暴露”和“封装”了 .NET 的功能
注(来自网友的分享):
1、python缺点:在win中,用于维护的cmd和powershell是默认自带的,python不是
2、powershell处理MySQL的数据库迁移会出错...
3、powershell其实是多平台的
4、cmd的权限是终端,而PowerShell只有管理员权限,做开发很多时候还是cmd好用,特别是根目录搭环境的时候
五、Powershell与CMD的区别
CMD(命令提示符) | PowerShell | |
是什么 | 简单的命令解释器Shell | 强大的脚本语言和Shell框架 |
来源 | 源自MS-DOS 基于DOS命令 | 面向Windows 给予.NET Framework /.NET |
处理的数据 | Text(string,文本流) | Object(面向对象,命令输出是.NET对象,具有属性和方法) |
功能 | 以来内置命令、可执行的外部程序(.exe/.bat) 运行批处理文件(.bat/.cmd) | 内置命令Cmdlet,直接调用.NET类库,有模块生态系统 运行Powershell脚本(变量、循环、条件、函数、错误处理) |
跨平台 | 仅限Windows | 跨平台(Windows、macOS、Linux) |
六、Powershell中的cmdlet
cmdlet——command let
由.NET库编写的,命名规范:动词-名词
Set-Location--返回.NET对象(>cd--返回string)、Get-Process
用于更改文件目录、注册表目录、证书存储目录
(与Linux命令相同)
comdlet功能
1、Get-Command——构建所有PowerShell支持的命令
2、Update-Help——更新帮助文档
3、Get-Help Get-Command——查看单个命令的帮助文档、查看安全信息
与Linux相同的命令:
1、pwd:输出当前的工作目录(Get-Location)
2、ls:列出当前目录的文件
3、clear:清屏
4、cat:查看某个文件的内容
5、mkdir:新建一个文件夹
6、mv:移动文件
7、cp:复制到当前地址
8、rm:删除当前目录文件
管道符
管道符:把上一个命令的输出结果,作为下个命令的输入
Linux里的管道只能传文本或者字节流
例:获取前五个CPU占用率最高的进程
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Get-Process :获取进程
Sort-Object CPU -Descending :根据CPU的占用时间进行降序排序
Select-Object -First 5:筛选前五个
例: Get-ChildItem $env:windir -Filter *.exe | Measure-Object -Sum Length
计算Windows目录下所有exe可执行文件的大小
Get-ChildItem :列出目录下面所有的文件
$env:windir -Filter *.exe :C盘Windows目录
Measure-Object -Sum Length:求和
Cheer!For Bright Future!