上个月微软 PowerShell 7发布了第5个预览版,离最终正式版本又更进了一步。本文介绍一下PowerShell 7将带来的5大变化,主要是一些大方向上的特性。
.NET Core 3.0
16年开源之前(PowerShell 5.1),PowerShell仅支持Windows,并且基于.NET框架,开源之后(PowerShell Core 6)基础框架修改为.NET Core,.NET Core支持所有操作系统,使得PowerShell支持Linux与macOS。
PowerShell 7的一项重大工作是将PowerShell Core 6代码库移植到.NET Core 3.0,所以PowerShell的发布时间取决于使用.NET Core 3.0完成PowerShell的集成和验证。
微软表示为了让PowerShell 7与.NET Core时间轴保持一致,因此GA版本将在.NET Core 3.0发布GA之后再推出。
另外,值得一提的是,PowerShell上一个大版本是PowerShell Core 6.2,新版本不是PowerShell Core 6.3而变成PowerShell 7是因为在过去两年里,PowerShell Core的使用率显著增加,其中大部分增长来自Linux平台,这对于将PowerShell打造成跨平台工具是一个可喜的数据,但是Windows 版本的使用量并没有显著增长,微软表示这可能与Windows平台上版本(PowerShell 5.1)的功能缺失有关,由于不支持的模块、程序集和API,现有的PowerShell用户无法利用PowerShell Core的新功能、性能增强和bug修复。为了解决这个问题,微软决定在PowerShell 7中完全替换Windows PowerShell 5.1。
Windows兼容性
PowerShell 7的主要目标之一是缩小PowerShell与PowerShell Core之间可用 cmdlet数量的差距,目标是提高与模块的兼容性,以在这些版本之间实现奇偶校验,以便管理员可以无缝地完全迁移到PowerShell Core。
长期支持(LTS)
微软将为PowerShell采用新的生命周期,发布LTS和非LTS版本的PowerShell 7,使其与.NET Core支持的生命周期紧密保持一致。每月将提供预览版本,以便尽早获得反馈。与当前发行版相比,LTS发行版将在最初发行后的三年内得到支持,而当前发行版仅在随后的当前发行版或LTS发行后的三个月内得到支持。
安全凭证管理
脚本编写通常可以通过自动化任务来简化IT管理员的工作,但是随着对本地、云和混合资源的依赖越来越大,这可能导致需要多个凭据的资源无法正常运行。PowerShell拥有用于在一定程度上保护凭据的方法,以在某种程度上避免在脚本中嵌入纯文本形式的凭证。
更进一步,微软正在努力创建凭据存储,该存储将充当安全存储库,存储本地或远程维护管理员凭据,用户不必以不安全的方式输入凭据。
集中记录
PowerShell的日志记录功能仅限于本地计算机,执行脚本和cmdlet生成的日志都会保留在运行cmdlet的本地设备上。这样可以对日志进行排序,以获取有关问题的反馈,但却非常耗时,需要用户分别查看所有设备。PowerShell 7.0通过策略将日志收集标准化,该策略会将所有日志定向到目标系统(或syslog类型的服务器),以进行OS无关的集中式管理。