暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PowerShell 01:简介

BPShare 2020-08-13
1064



什么是PowerShell?


如果你是一个Linuxer,一眼就能看出来,PowerShell也只是众多shell的一种,只是名字里有一个Power,听起来比较高大上,看起来不明觉厉,有木有?那到底什么是PowerShell呢?微软官方给出的定义是:


PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. Unlike most shells, which accept and return text, PowerShell is built on top of the .NET Common Language Runtime (CLR), and accepts and returns .NET objects. This fundamental change brings entirely new tools and methods for automation.


简单来说,PowerShell是:

- 自动化任务和配置管理平台

- 跨平台:Windows, Linux, Mac(更严格的说是从PowerShell6.0版本开始)

- 拥有命令行外壳和脚本语言环境

- PowerShell基于.NET CLR

- 接受和返回.NET对象

- 开源(这个是最大的亮点)


说起PowerShell,不得不说一个人:Jeffrey Snover,也即是 PowerShell的作者或者创造者,就是下面的这位大叔。

这位大叔是Microsoft Technical_Fellows(微软技术院士)之一,根据wikipedia的资料显示,截至到2017年7月份,整个微软有18位技术院士。有兴趣了解都有哪些大神,请参考下面的连接:

https://en.wikipedia.org/wiki/Category:Microsoft_technical_fellows


除了担任PowerShell的首席架构师,他还是Azure Infrastructure和Management产品的首席架构师,还担任过Windows Server的首席架构师。


PowerShell发展史历史


2002年的时候,微软已经开始研发一款新的命令行管理工具,最初的代号叫做Monad(Microsoft Shell或者MSH)。Monad字面上的意思是「单一」,顾名思义,Monad意图就是做出一套整合完善的工具,让使用者不需要再用许多不同的工具。不管你是否在寻找一个更好的Windows命令行Shell,寻找一个简单的环境以执行常用脚本,或者在寻找一个功能强大的描述语言好让你开发出功能复杂的产品,Monad都应该会满足你的需求。

Monad的起源,其实有一点无心插柳。WMI是用来管理Windows操作系统的一个重要的API,虽然WMIC(WMI的命令行接口)的威力很大,但是它的语法让许多人觉得难以上手。虽然WMI对Windows的操控相当不错,但是遇上其它厂商的产品就没辄了。Jeffrey Sonver原先意图用C#改写WMIC,后来这个想法变成了Monad计划。Monad的吸引力无远弗届,如果你用过其它的Shell(比方说Unix的Shell),你会发现Monad的出现,让Windows「命令窗口」有许多新东西值得你赏玩。


2003年9月在一次开发者大会上公开亮相。


2006年11月,微软发布PowerShell 1.0,支持Windows XP SP2, Windows Server 2003 SP1和Vista等操作系统,也是Windows Server 2008的一个可选项。


后续就是常规的版本更新,直到2016年8月份,一个月之内,微软发布了两个版本:

- Windows PowerShell 5.1

- PowerShell Core 6.0


可以说这是一个里程碑了,细心的同学已经发现了,从6.0开始,名字里没有Windows了,为什么呢?其实最早微软把这个产品命名为Windows PowerShell是因为它只支持Windows,是基于.NET Framework的。从PowerShell Core 6.0开始,是基于.NET Core,实现了跨平台,也就是说你不但可以在Windows上使用,还可以在Linux和Mac系统上使用PowerShell。


目前Windows Powershell最新的版本是Windows PowerShell 5.1,已经集成在Windows 10系统里,如果你有定期更新Windows 10系统,那么你已经可以直接使用Windows PowerShell 5.1了。在接下来的教程里,我也会使用这个版本做演示。


PowerShell最新的版本是7.1,为什么不延续6.x的命名规则了,传说是要取代Windows Powrshell 5.1和6.x。对Windows PowerShell有接触的同学都知道,从1.0以后的,Windows PowerShell的安装路径永远是:

  • C:\WINDIR\System32\WindowsPowerShell\v1.0

不管你是2.0,3.0,一直到5.1


从6.0开始,微软终于做了改动,安装路径见下:

  • PowerShell Core 6.x: $env:ProgramFiles\PowerShell\6

  • PowerShell 7: $env:ProgramFiles\PowerShell\7


做了一个PowerShell的历史版本表格,供大家参考:

YearVersionNotes
2006.11Windows PowerShell 1.0Cmdlet #: 129[33]
2009.8Windows PowerShell 2.0Cmdlet #:632[34]
2012.12Windows PowerShell 3.0Cmdlet #: about 1,000[35]
2015.5Windows PowerShell 4.0?
2016.2Windows PowerShell 5.0Cmdlet #: about 1,300[36]
2016.8.2Windows PowerShell 5.1Cmdlet #: 1586[citation needed]
2016.8.18PowerShell Core 6.0Release one minor version every six months
2018.9PowerShell Core 6.1?
2019.2PowerShell Core 6.2?
2019.12PowerShell 7.0Cmdlet #: 1507[citation needed], RC.1

以上部分内容来自:

https://en.wikipedia.org/wiki/PowerShell#Versions

https://baike.baidu.com/item/Monad/1061393?fr=aladdin


PowerShell VS CMD + VBS


一句话,CMD, VBS可以现实的功能,PowerShell基本上都可以更容易实现,PowerShell能实现的功能,CMD和VBS不一定能实现或者即使CMD和VBS可以实现,但是实现起来没那么容易。


个人觉得,不用纠结他们直接的区别,都是你干活的工具,是随着产品的更新迭代而产生的技术工具。有一天有人给你说,嗨,我这知道了一个新工具,你要不要试试?你说好的,我来试试,用着顺手,你就继续用,不顺手你就继续用你觉得顺手的工具,仅此而已。


PowerShell的样子


既然PowerShell是一个平台,一个工具,具体是什么样子的呢?点击Windows 10桌面左下角的图标,然后输入:powershell,就会显示如下界面:


  • Windows PowerShell

  • Windows PowerShell ISE

  • Windows PowerShell (x86)

  • Windows PowerShell ISE (x86)


首先说后面两个名字了包含x86的,现在安装的系统一般都是64位的,在安装PowerShell的时候,会额外安装一个兼容x86系统的PowerShell和PowerShell ISE,如果你要运行一些只支持x86的模块,或者你要远程到一台x86系统时,这个时候是要使用Windows PowerShell(x86)的。


再说Windows PowerShell和Windows PowerShell ISE:

Windows PowerShell: PowerShell命令行界面,是这个样子


Windows PowerShell ISE

Windows PowerShell Integration Script Envrionment,集成脚本开发环境的工具,见下图的样子。

如果你需要开发PowerShell脚本,就可以直接使用这个工具。如果你不喜欢,还可以使用其它的IDE工具,只要安装相应的插件就可以了,这里就不过多介绍了。


那我们现在就来看一下,当前PowerShell的版本,如何查看呢?

打开Windows PowerShell,输入:$PSVersionTable,回车即可,详见下图。

    PS U:\> $PSVersionTable

    这个$符号在PowerShell里就是用来定义变量的,后面我们会讲到,现在只需要知道如何查看当前PowerShell的版本信息即可。


    好,有关PowerShell的简介就到这里,我们下次就开始介绍PowerShell的使用方法和基础语法了。


    如果喜欢这篇文章,请点个赞,转发一下呗!



    本人微信号,欢迎骚扰!


    扫码关注微信公众号,都是干货哦!


    点个赞,点个在看呗!~


    文章转载自BPShare,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论