最新PowerShell 7.0发布,大幅提升模块兼容性

微软发布最新的PowerShell 7.0正式版,除了修复多个bug之外,还加入了一些新的cmdlet和API,也添加了不少新功能。前一个版本名称PowerShell Core 6.x,为了不让用户混淆,PowerShell 7.0名称仍然会沿用带着Core字样,但是微软表示,这个新版本代表着兼容性的一大进展,之后会被表示成PowerShell 7.0,并且成为一个长期支持版本。

PowerShell是针对处理结构化数据、REST API与对象模型,进行优化的跨平台自动化工具和配置框架,它包含了命令行壳层、面向对象脚本语言、执行走本与cmdlet的工具以及管理模块。上一个主要版本是三年前发布的PowerShell Core 6,创建在.NET Core之上,开始加入对Windows、macOS和Linux的跨平台支持,且以SSH支持PowerShell远程,并大幅改进对REST和JSON的支持。

从Core 6.x版本发展到现在的PowerShell 7.0,其采用的.NET Core,也从2.x升级到3.1,而.NET Core 3.1新提供许多.NET Framework API,特别是在Windows操作系统上,因此与现存Windows PowerShell模块的向后兼容度大幅提升,这包括在Windows上,许多需要GUI功能的模块,像是Out-GridView、Show-Command以及许多角色管理模块等。微软提到,过去因为模块兼容性问题,无法使用PowerShell Core 6.x的用户,或许现在就能够使用PowerShell 7.0了。

在PowerShell 7.0中,ForEach-Object加入平行执行能力。这个ForEach-Object,是能够在集合中迭代项目的cmdlet,在默认情况下,平行走本区块使用当前平行任务调用者的工作目录,用户现在可以使用-Parallel参数,指定平行执行走本区块。

另外,PowerShell 7.0加入三元运算符,提供类似if-else陈述式的行为。微软提到,PowerShell的三元运算符来自C#三元预算子语法。PowerShell 7.0还实例了&&和||管线链结(Pipeline Chain)运算符,这些运算符类似壳层Bash与Zsh中AND与OR,以及cmd.exe中的有条件处理符号。使用&&,则当左边的管线成功,便执行右侧管线,而||则相反,当左侧管线失败,则运算符执行右侧管线。

关于与各种操作系统的兼容性,PowerShell 7.0支持Windows 7以上,macOS 10.13以上版本,同时,也支持RHEL、Ubuntu和Alpine等各种Linux发布版本,而且还支持Debian和Ubuntu的ARM32和ARM64版本,以及Alpine Linux的ARM64版本。