英文原文:Microsoft Annouces General Availability of PowerShell Core 6.0
微软正式发布 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 的完整文档。