PowerShell从最初的1.0版本到本书写作时的7.3版本,已经经历了多个版本的迭代和更新。有句话说得好:如果你想了解一个人,就了解他的过去。PowerShell其实也一样,通过了解PowerShell的过去版本,也就明白了当前PowerShell为什么有这个功能,或者为什么没有这个功能。接下来让我们一起走入PowerShell的发展历史,看一下PowerShell经历了怎样的发展走到今天。
发布日期:2006年11月
命令数量:129条
PowerShell 1.0作为Windows Vista 的组件发布,后来PowerShell 1.0 for Windows XP 和Power-Shell for Windows Server 2003 也先后发布。Windows Server 2008 作为可选组件集成在系统中。
发布日期:2009年7月22日
命令数量:624条
PowerShell 2.0 以组件的方式集成在Windows 7 和Windows Server 2008 R2的平台,同时发布了Windows Server 2003 SP2和Windows XP3的安装包。2.0版本在1.0 版本的基础上增加了许多功能,增加的功能如下所示。
· 远程执行功能:可以通过一台集中管理管控计算机管控运行在各台服务器的运行程序和结果。
· 后台Job:任务在后台操作,能够避免执行命令的时候都在前台执行。
· 步进式管道功能:支持 BeginProcessing()、ProcessRecord()和EndProcessing()三个不同阶段。
· 模块功能支持:通过增加或导入模块增加额外的PowerShell Cmdlet运行。
· 事件支持:2.0 版本开始支持WMI系统事件的监听、转发及操作。
· PowerShell 集成开发环境:PowerShell 集成开发环境的出现让代码的开发更加简单。
· PowerShell新操作符支持:支持-split和-join操作符。
· 错误处理机制:支持使用Try-Catch-Finally 进行错误处理。
· 块注释功能:支持PowerShell的块注释功能。
发布日期:2012年8月1日
命令数量:1000多条
PowerShell 3.0 版本默认集成在Windows 8.0 和Windows Server 2012 系统中,同时发布了面向Windows 7 SP1、Windows Server 2008 SP1 和Windows Server 2008 R2 SP1 版本的安装包。Power-Shell 3.0 在早期升级的版本中提供了升级安装包,升级安装包基于WMF 3.0的框架进行了升级。PowerShell 命令相比早期版本,大幅度扩充了Cmdlet,在3.0的版本中提供了1000多条Cmdlet。同时在PowerShell 3.0中提供了如下的更新功能。
· 定期执行Job(Schedule Job):相比后台Job功能,可以基于计划时间来进行Job的执行。
· 支持Session 级别的可用性:PowerShell 在3.0版本开始支持Session级别的可用性,网络断开后支持重连功能。
· 代码智能提示:在ISE中进行代码编写时增加了智能提示,让脚本编写更为流畅。
· 管理任务委派:管理员可以将管理任务委派给不具有管理权限的用户执行相关的脚本。
· 帮助文档更新:针对本地的帮助文档更新,我们可以采用Update-Help 命令更新文档。
· 模块自动加载:PowerShell 3.0 后的版本不用预先加载模块,可以通过命令自动进行模块加载。
Windows PowerShell 4.0 直接集成在Windows 8.1 和Windows Server 2012 R2 系统中,同时Windows 7 SP1、Windows 2008 R2 SP1和Windows Server 2012 可以通过安装更新安装包的方式升级Windows PowerShell 4.0,PowerShell 4.0 更新了以下功能。
· DSC 支持:支持DSC 设置和配置分发。
· 默认执行策略变更:在Windows Server 版本中,执行策略变更为Remote-Sign。
· 保存帮助:支持分布式帮助的保存,用户可以直接将帮助保存在能够联网的计算机上,再通过命令执行将帮助下载到其他的计算机。
· 网络诊断:可以诊断物理机器或虚拟机的交换机设备。
· Where筛选和ForEach轮询功能:提供了Where 筛选功能,同时也提供了ForEach 函数进行对象的轮询。
Windows PowerShell 5.0 内置在Windows 10 RTM版本中,发布时间是2016年2月24日。其他各个版本操作系统可以通过安装WMF 5.0 来实现PowerShell 环境的升级,它的更新版本功能如下。
· 支持面向对象语言:Class的引入让管理员可以实现面向对象的编程。
· 引入PowerShell 生态圈:基于PowerShell 5.0 版本,PowerShell 开始构建类似于Python的生态圈网站功能,基于Nuget .NET环境实现第三方模块的快速下载和安装。
在Windows 10周年更新版和Windows Server 2016 中集成了PowerShell 5.1 版本。PowerShell 5.1发布日期为2017年1月19日。如果是其他版本系统,都可以通过安装更新包将PowerShell版本升级到PowerShell 5.1。PowerShell 5.1 版本提供了以下的功能。
· 加入本地用户管理模块。
· PowerShell从5.1 版本开始分成两个版本:桌面版和Core版本。
微软在2016年8月16日发布了PowerShell 6.0 版本,真正实现了产品的跨平台,可以在Windows、macOS及Linux系统中运行PowerShell Core 6.0 版本,这是一个重要的特性更新。在PowerShell Core 6.0版本,微软发布了两个小版本更新,分别如下。
· PowerShell Core 6.1版本集成在Windows Server 2019 版本中,提供了1900多条命令。
· PowerShell Core 6.2版本在性能、Bug修复及本地语言支持方面提供了增强功能。
相比早期版本,PowerShell 7.0提供了比较多的新功能,相比之前的版本功能增强。当然目前PowerShell的功能还不是特别完整,我们期待微软能够尽快更新。
· 支持ForEach并行任务:在ForEach命令中通过-Parallel 参数将目前的任务并行处理。
· 内置模块兼容性增强:在与内置Windows模块的兼容性方面,几乎与Windows PowerShell不相上下。
· 连接操作符(|| &&):支持条件管道符功能。
· 跨平台DSC(Desired state configuration,期望状态配置):支持在不同的平台接收DSC配置信息。
本书将会以PowerShell 5.1 版本为执行环境,少量的命令将在PowerShell Core 7.0 版本执行,如命令需要运行在PowerShell Core 7.0版本,将会做特殊说明。