PowerShell是Windows和Windows Server的自动化平台和脚本语言,具有命令行界面,可为IT专业人员提供更多配置微软Windows系列操作系统的机会,是一种通用的管理工具,可让用户简化对系统的管理。与其他基于文本的外壳程序不同,PowerShell利用.NET Framework的功能,可提供丰富的对象和大量内置功能来控制Windows环境。
近日,微软发布了PowerShell 7,这是其跨平台PowerShell核心自动化工具和配置框架的最新版本。这次更新带来了一些重大的变化、新的功能和改进的向后兼容性。展望未来,PowerShell 7将成为“一个真正的PowerShell”,以取代之前Windows PowerShell和PowerShell核心之间的分层。
此版本中最大的更改之一是从.NET Core 2.x升级到了3.1版。微软在发布该版本的博客文章中说:“.NET Core 3.1带来了许多.NET Framework API,从而使它们与现有Windows PowerShell模块的向后兼容性大大提高。” “这包括Windows上许多需要GUI功能的模块,例如Out-GridView和Show-Command,以及Windows中附带的许多角色管理模块。”
PowerShell安装目录改变
在安装PowerShell 7时,它将安装到新目录中,并与PowerShell 5.1一起运行。如果要从PowerShell Core 6.x升级,将覆盖PowerShell 6目录,并删除所有不必要的文件。以下是安装目录列表:
将PowerShell 7安装到%programfiles%PowerShell目录
%programfiles%PowerShell 文件夹已添加到 $env:PATH
PowerShell 7安装程序包将升级PowerShell Core 6.x的早期版本:
Windows:%programfiles%PowerShell 替换为 %programfiles%PowerShell
Linux: /opt/microsoft/powershell/6替换为 /opt/microsoft/powershell/7
macOS: /usr/local/microsoft/powershell/6 替换为 /usr/local/microsoft/powershell/7
PowerShell 7中的新功能
管道并行化
新的运算符
ConciseView和Get-Error cmdlet
自动新版本通知
直接从PowerShell 7调用DSC资源
兼容层
在测试实际代码之前,请务必确保检查“环境变量”。
1、管道并行化
现在,使用ForEach-Object-Parallel时,可以并行执行或处理对象,而不是使用sequence方法。此方法可以在不到10秒的时间内卸下三个WIM映像,而不是按顺序运行时的近25秒。下面是它的示例代码:
Get-WindowsImage -Mounted | foreach -Parallel {Measure-Command {Dismount-WindowsImage -Discard -Path $_.Path}}
2、新运算符
有三个新的三元运算符:a?b:c,管道链运算符;||和&&和Null条件运算符;??和??=。 它们的作用类似于一个简化的if-else语句,利用它们可以使编写代码变得容易,而不是一直使用If-else循环。
3、ConciseView和Get-Error cmdlet
ConciseView是一个用户可选择的视图,它是PowerShell 7的默认视图。如果错误不是来自脚本,将收到一个单行错误。如果来自脚本或存在解析错误,将收到一条多行错误消息以及一个指针,显示错误发生在哪一行。
然后有一个新的cmdlet Get Error,可以帮助用户在需要时获得错误的详细视图。它可以显示最后发生的错误的完整详细信息,包括内部异常。
$Error | Get-Error
Get-Error -Newest 3 # Displays the last three errors that occurred in the session
4、自动新版本通知
从PowerShell 7开始,系统将每天检查一次更新,如果有新版本,系统将通知用户。此信息仅在后续会话开始时显示。
PowerShell更新有三个标志:
Default:GA、预览和RC版本
Off:关闭更新通知功能
LTS:只通知长期服务(LTS)GA版本的更新
如果要在PowerShell 7中关闭更新通知,请在PowerShell窗口中执行以下命令:
$Env:POWERSHELL_UPDATECHECK = "Off"
5、直接从PowerShell 7调用DSC资源
Invoke-DscResource cmdlet运行指定的PowerShell所需状态配置(DSC)资源的方法,这是一个实验功能。
使用此cmdlet,配置管理产品可以通过使用DSC资源来管理Windows或Linux。当DSC引擎在启用调试的情况下运行时,此cmdlet还可启用资源调试。
6、兼容层
它允许PowerShell用户在隐式Windows PowerShell会话中导入模块。使用此功能,用户能够在远程计算机上将真实命令作为会话使用,并将结果返回到本地会话。现在它支持导入模块,用户可以在远程计算机上运行这些模块。
PowerShell 7是跨平台的,它支持Windows,macOS和各种Linux版本,PowerShell是Linux和macOS上都可用的开源软件。很高兴在PowerShell 7中看到如此多的新功能,希望微软加大开发力度,开发出功能更强大的版本。