微软正式发布 PowerShell Core 6.0

  • Steef-Jan Wiggers
  • 谢丽

2018 年 1 月 23 日

话题:WindowsDevOps语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

微软正式发布 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

WindowsDevOps语言 & 开发