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中看到如此多的新功能,希望微软加大开发力度,开发出功能更强大的版本。