微软发布了 PowerShell 7 Preview 3,Powershell 7 preview 3 构建在 .NET Core 3.0 preview 8 之上,.NET Core 3.0 重新引入了大量 .NET Framework API,打开了大量随 Windows 附带的 PowerShell 模块,这些模块将被验证和标记为兼容。由于对模块的兼容性更改是 Windows 的一部分,因此需要最新版本的 Windows 10/Windows Server 来实现完全模块兼容性。

默认情况下预览版中的实验特性

在默认情况下启用所有实验特性,以便让 PowerShell 委员会获得更多反馈,以确定某个特性是否应该继续作为实验功能,是否应该从实验性功能转移到稳定特性(非实验性功能),或者被删除。在稳定的版本(以及候选版本)上,默认情况下将继续禁用实验性功能。

注意,如果以前手动启用了实验特性,powershell.config.json 设置文件将优先记录,并且只会启用该文件中列出的实验性功能。你可以删除该文件或运行 Get-ExperimentalFeature | Enable-ExperimentalFeature,以确保启用了所有实验功能。但是,如果使用管道,你将不得不再次使用具有新的实验特性的预览版本。

gif

默认为单线程

在此版本之前,pwsh 默认作为多线程单元运行。但是,图形用户界面 API(如 WinForms 和 WPF)需要一个单线程单元。 此版本在单线程方面,pwsh 与 powershell.exe 相同,支持从 PowerShell 脚本调用 WinForms 和 WPF API。

gif

显示 COM 方法签名参数名

现在 Windows 上,如果从 PowerShell 调用 COM API,nbkalex 的一个新功能将显示 COM 方法的参数名称,而不仅仅是类型信息,这些信息可以作为简单的文档使用,指示应该传递哪些参数。

gif

将 DBNull 和 NullString 视为 $null

使用数据库类型,可能会得到一个 [dbnull]::Value,它相当于数据库中的 $null,但是在 PowerShell 中,这并不等于 $null,所以不能直接比较它。通过对 Joelsallow 的更改,你可以将 [dbnull]::value 和 [nullstring]::value 与 $null 进行比较,并获得 $true。

gif

Read-Host 提示符对所有输入都有效

Read-host 如何调用控制台主机,以及控制台主机如何提示输入(例如给定值的强制性参数),可能就会遇到这样一种情况:即在使用某些字符时,使用 Read-host 提示脚本中的输入会出现其他意想不到的内容。此版本中已经被修复了。

gif

-Split 运算符支持负数

-Split 操作符将一个或多个字符串拆分为子字符串,你可以选择指定一个值来指示要返回的子字符串的最大数。这一新功能允许你将子字符串的最大数指定为负值,这意味着拆分应该从右向左而不是通常从左到右发生。

gif

ForEach-Object -Parallel

此版本向 ForEach-Object 添加了一个 -Parallel 参数,该对象接受脚本块并行执行。在默认为 5 的情况下,可选的 -ThrottleLimit 参数可以用来设置并行使用的最大线程。

gif

解析 appx 修复点

在 Windows 10 上,如果从 Windows STore 安装了应用程序并将它们列在命令行中,它们将显示为 0 字节文件。这些文件实际上是到实际可执行文件的不同类型的链接。使用此更改后,目标可执行文件将在使用 get-child Item 时显示.

gif

pwsh 作为登录 shell

Linux 和 MacOS 系统上,有一个登录 shell 的概念,它设置其他应用程序和 shell 继承的环境。在此版本之前,如果你使用 pwsh 作为默认登录 shell,会注意到一些环境变量丢失或不完整。

通过此更改,pwsh 将与 sh Bourne Shell 在设置登录环境方面的工作方式相同,从而使一切正常工作。

Telemetry

在这个预览版本中,增加了更多的遥测技术,详情见博客

这个版本也包含了许多 bug 修复以及有针对性的性能改进,请见更改日志:

https://github.com/PowerShell/PowerShell/releases

下载地址:

https://aka.ms/get-powershell

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。