微软正式发布powershell的新版本powershell core 6.0。该版本是开源的,支持多种平台(windows、macos、linux),是为异构环境和混合云而构建的。
虽然代号是6.0,但powershell core 6.0是powershell的第一个core版本,用开源.net core进行了重写,是windows版本的后继版本。而且,这个新版本得到了开源社区的支持,包括代码、测试、文档、问题、反馈和评论等方面的贡献。即使是现在,人们仍然可以向powershell做贡献。
在特性支持方面,微软并没让core版本支持windows powershell的所有特性。powershell core没有提供powershell工作流、管理单元、wmiv1 cmdlets等特性,也不能执行所需状态配置(dsc)资源。来自微软的joey aiello在一篇博文中介绍了powershell core的正式版本:
作为向.net core及其他操作系统迁移的一部分,我们不得不放弃windows powershell正在使用的部分技术。而在其他一些地方,我们利用powershell重构的机会停止支持一些用户较少的技术。其中部分技术最终可能会回归powershell core,但也有许多不会。
现在有了两种powershell,一种是广为流行的基于.net framework的成熟版本(fullclr),一种是基于.net core(coreclr)的。fullclr及其依赖的.net framework只在windows上可用,它已经发布了多个版本(1.0、2.0、4.0、5.0和5.1),以名称powershell.exe发布,是windows客户端及服务器的内建组件。5.1版本是最后一个版本,后续不会再有新版本。除了已经弃用的1.0和2.0版本之外,微软计划继续为windows powershell的大部分版本提供支持。不过,这项支持的前提是底层的windows操作系统仍然是一个受支持的产品。
得益于.net core,coreclr版本(6.0)可以跨平台。该版本在windows上的名称为pwsh.exe,在macos和linux上是pwsh。除了6.0外,5.0/5.1 core版本也成为microsoft nano服务器的一部分。总之,core版本不同于full版本。paul thurrott是一名技术新闻工作者,他在一篇博文中这样描述powershell core:
从功能的角度讲,windows powershell依然更强大,它可以充分利用.net framework和.net standard提供的更大的.net功能集。powershell core基于更新、更简洁但功能较弱的.net core运行时,使它的功能受限于.net core和.net standard当前提供的功能。但powershell core的优势和.net core一样,可以跨平台。因此,你编写的任何powershell core脚本都可以在windows、 macos及各种较新的linux发行版(如ubuntu、debian、red hat企业版等)上运行。
powershell core设定了未来几年的路线图,它采用了微软现代生命周期策略,旨在让用户的版本可以保持最新。6.x版本大约每6个月就会收到更新。
图片来源:https://docs.microsoft.com/en-us/powershell/scripting/powershell-core-support?view=powershell-6
github上提供了powershell core源代码。windows版本和macos&linux版本的下载是单独提供的。微软文档站点提供了windows powershell和powershell core的完整文档。
查看英文原文:microsoft annouces general availability of powershell core 6.0