2020 年 11 月 11 日,微软宣布 PowerShell 7.1 正式发布。 在 PowerShell 7.0 建立的基础上,我们重点关注社区问题,并包括一些改进和修复。 我们致力于确保 PowerShell 仍然是一个稳定的高性能平台。

PowerShell 7.1 包括以下功能、更新和重大更改。

  • 包含预测性 IntelliSense 的PSReadLine 2.1.0
  • PowerShell 7.1 已发布到 Microsoft Store
  • 为新 OS 版本更新了安装程序包,支持 ARM64
  • 4 个新试验性功能和 2 个试验性功能晋升为主要功能
  • 提高可用性的几项重大更改

有关更改的完整列表,请参阅 GitHub 库中的更改日志

PSReadLine 2.1.0

PowerShell 7.1 还包括 PSReadLine 2.1.0。 此版本包含预测性 IntelliSense。 有关预测性 IntelliSense 功能的详细信息,请参阅 PowerShell 博客中的公告。

Microsoft Store 安装程序包

PowerShell 7.1 已发布到 Microsoft Store。 你可以在 Microsoft Store 网站上或在 Windows 应用商店应用程序中找到 PowerShell 版本。

Microsoft Store 包的权益:

  • 直接内置于 Windows 10 的自动更新
  • 与其他软件分发机制(如 Intune 和 SCCM)集成

备注

不能修改存储在 $PSHOME 中的任何系统级配置设置。 其中包括 WSMAN 配置。 这可以防止远程会话连接到 PowerShell 的基于应用商店的安装。 支持用户级配置和 SSH 远程处理。

其他安装程序

有关支持的操作系统和支持生命周期的最新信息,请参阅 PowerShell 支持生命周期。

查看首选操作系统的安装说明:

  • Windows
  • macOS
  • Linux

此外,PowerShell 7.1 还支持 ARM32 和 ARM64 版的 Debian、Ubuntu 和 ARM64 Alpine Linux。

虽然没有得到正式支持,但社区还提供了 Arch 和 Kali Linux 的包。

备注

Debian 10+、CentOS 8+、Ubuntu 20.04、Alpine 和 Arm 目前不支持 WinRM 远程处理。 有关设置基于 SSH 的远程处理的详细信息,请参阅通过 SSH 进行 PowerShell 远程处理。

实验性功能

有关实验性功能的详细信息,请参阅使用实验性功能。

以下试验性功能现在是此版本中的主要功能:

  • PSNullConditionalOperators
  • PSUnixFileStat

此版本中添加了以下试验性功能:

  • Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace

    • PowerShell 7.1 扩展了此试验功能,以将 Runspace 参数添加到所有 *-PSBreakpoint cmdlet。 “运行空间”参数会指定一个“运行空间”对象,以便可在指定的运行空间中与断点进行交互。
  • PSNativePSPathResolution - 借助此功能可将 PowerShell 提供程序路径传递给不支持 PowerShell 路径语法的本机命令。

  • PSCultureInvariantReplaceOperator - 如果 -replace 运算符语句中的左操作数不是字符串,则此操作数会转换为字符串。 启用此功能后,转换不会使用区域性设置进行字符串转换。

  • PSSubsystemPluginModel 为支持未来的预测 IntelliSense 插件奠定了基础。

重大更改和改进

  • 当本机命令写入 stderr 时,将 $? 修复为非 $false (#13395)

    通常情况下,本机命令会写入 stderr 且不会指示失败。 进行此更改后,只有在本机命令也具有非零退出代码时 $? 才会设置为 $false。 此更改与试验性功能 PSNotApplyErrorActionToStderr无关。

  • 使 $ErrorActionPreference 不会影响本机命令的 stderr 输出 (#13361)

    通常情况下,本机命令会写入 stderr 且不会指示失败。 进行此更改后,仍会在 ErrorRecord 对象中捕获 stderr 输出,但如果 ErrorRecord 来自本机命令,则运行时将不再适用 $ErrorActionPreference 。

  • 在 Get-Date 上将 -FromUnixTime 重命名为 -UnixTimeSeconds,以允许 Unix 时间输入 (#13084)(感谢 @aetos382!)

    在 7.1-preview.2 中添加了 -FromUnixTime 参数。 参数已重命名,以便更好地匹配数据类型。 此参数取整数值,表示自 1970 年 1 月 1 日 0:00:00 起的秒数。

    此示例将 Unix 时间(由 1970-01-01 0:00:00 以来的秒数表示)转换为 DateTime。

    PowerShell复制

    Get-Date -UnixTimeSeconds 1577836800Wednesday, January 01, 2020 12:00:00 AM
    
  • 允许显式指定的命名参数取代展开的哈希表中的同一个参数 (#13162)

    进行此更改后,展开中的命名参数将移到参数列表的末尾,这样在所有显式指定的命名参数被绑定后,它们就会被绑定。 当找不到指定的命名参数时,简单函数的参数绑定不会引发错误。 未知的命名参数绑定到简单函数的 $args 参数。 将展开移动到自变量列表的末尾将更改参数在 $args中的显示顺序。

    例如:

    PowerShell复制

    function SimpleTest {param($Name,$Path)"Name: $Name; Path: $Path; Args: $args"
    }
    

    在以前的行为中,MyPath 未绑定到 -Path,因为它是自变量列表中的第三个自变量。 ## 因此它最终和 Blah = "World" 一起填充到“$args”中

    PowerShell复制

    PS> $hash = @{ Name = "Hello"; Blah = "World" }
    PS> SimpleTest @hash "MyPath"
    Name: Hello; Path: ; Args: -Blah: World MyPath
    

    进行此更改后,@hash 中的自变量将移到自变量列表的末尾。 MyPath 成为列表中的第一个自变量,因此它将绑定到 -Path

    PowerShell复制

    PS> SimpleTest @hash "MyPath"
    Name: Hello; Path: MyPath; Args: -Blah: World
    
  • 使开关参数 -Qualifier 不在 Split-Path 的位置 (#12960)(感谢 @yecril71pl!)

  • 未指定工作目录时,将工作目录解析为 Start-Process 的文本路径 (#11946)(感谢 @NoMoreFood!)

  • 在 Web cmdlet 中指定 -OutFile 参数,使其具有与 -LiteralPath 相同的作用 (#11701)(感谢 @iSazonov!)

  • 修复 BigInteger 数字文本的字符串参数绑定 (#11634)(感谢 @vexx32!)

  • 在 Windows 上,Start-Process 通过当前会话中的所有环境变量创建进程环境,同时使用 -UseNewEnvironment 创建新的默认进程环境 (#10830)(感谢 @iSazonov!)

  • 将 ScriptBlock 转换为委托时,不要将返回结果包装为 PSObject (#10619)

    将 ScriptBlock 转换为要在 C# 上下文中使用的委托类型时,将结果包装为 PSObject 会导致不必要的麻烦:

    • 当值转换为委托返回类型时,PSObject 实质上是已解包。 因此不需要 PSObject
    • 如果委托返回类型为 object,则将其包装为 PSObject 会使其难以在 C# 代码中运行。

    进行此更改后,返回的对象是基础对象。

PowerShell 7.1 中的新增功能相关推荐

  1. C# 9.0中的新增功能 - 译

    https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9 What's new in C# 9.0 C# 9.0中的新增功能 ...

  2. 以下是ECMAScript 2016、2017和2018中所有新增功能的示例

    by rajaraodv 通过rajaraodv 以下是ECMAScript 2016.2017和2018中所有新增功能的示例 (Here are examples of everything new ...

  3. C#6中的新增功能 【Unity3D亲测】

    随着Unity2017的普及,使用.NET 4X的开发者也越来越多了,下面笔者给大家介绍一下在C# 6中的新功能主要是怕自己忘记,2333,有些功能还是很实用的~ 使用Unity版本2018.2.9f ...

  4. KSO-.NET 6 中的新增功能

    .NET 6 中的新增功能 .NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动. .NET 6 在移动.桌面.IoT 和云应用之间统一了 SDK.基础库和运行时. 除了这 ...

  5. .Net 6.0中的新增特性_.Net 6.0中的新增功能

    .Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...

  6. 王牌代码静态测试工具Helix QAC 2022.2 中的新增功能(1)

    Helix QAC 2022.2 中的新增功能 Helix QAC 2022.2 提供更强大的 C++ 20语言功能支持,更新了 MISRA 和 HKMC 的合规性模块,以及新的配置选项,可在处理 S ...

  7. 速览Visual Studio 2022 中的新增功能

    目录 性能改进 Visual Studio 2022 为 64 位 在文件中更快地查找 Git 工具速度更快 生成新式应用 适用于 C++..NET 和热重载的更佳开发工具 Blazor & ...

  8. sql server新增列_SQL Server 2016安装中的新增功能?

    sql server新增列 SQL Server 2016 introduced officially on the 1st of June 2016. It comes with many new ...

  9. 服务器创建和附加虚拟磁盘,Windows 7 虚拟硬盘中的新增功能

    [IT168 专稿]Microsoft 虚拟硬盘文件格式 (.vhd) 是一种公用格式规范,用于指定封装在单个文件中的虚拟硬盘,它能够承载本机文件系统并支持标准的磁盘操作. Microsoft Win ...

最新文章

  1. 有哪些适合放在程序员办公桌上的高逼格物件?哈哈哈哈哈哈哈!
  2. 编写程序,输入各类型变量按相应格式输出
  3. 第二周冲刺第四天个人博客
  4. vue路由切换时内容组件的滚动条回到顶部
  5. 字典常用的方法(内建函数)
  6. 小米MIX 4概念渲染图曝光:无孔屏下摄像头果真科幻
  7. .NET Core 3.0中的Cookie身份验证
  8. C++之操作符重载探究(三):输出操作符重载
  9. spss练习数据_动手练习SPSS因子分析啦,会不会做一动手就知道了
  10. Compress、tar、gzip、zcat、bzip2、bzcat、打包解压命令行
  11. 【SemiDrive源码分析】【驱动BringUp】40 - Touch Panel 触摸屏调试 (Android侧)
  12. Postman如何设置成中文?(汉化)
  13. android popupwindow 消失动画,PopupWindow动画结束后dismiss崩溃解决
  14. 计算机处理数据几进制,计算机内部运行和处理的数据是几进制
  15. 关于深度思考的一点总结
  16. 蔡康永的情商课-笔记
  17. 工业物联网的价值有哪些
  18. unity代码混淆及帧同步服务器、常用软件记录
  19. 名悦集团:汽车冬季保养小知识
  20. java owa_微软将新增禁止38种OWA副档名档案,包含Java、Python等

热门文章

  1. 是面试官放水,还是公司太缺人?这都能过,字节跳动原来这么容易进...
  2. 立创元件导入AD集成库的方法
  3. Shape Inpainting using 3D Generative Adversarial Network and Recurrent Convolutional Networks
  4. 谈谈个人对SnmpSharpNet的实践经验
  5. MySQL 三个排序方法 row_number()、rank()、dense_rank()
  6. 日常学习记录一_mcufly串口下载
  7. 基于HTML5+CSS3的网页设计与实现
  8. oss视频转码处理(解决部分浏览器无法正常播放问题)
  9. arcgis直方图工具在哪_这些分析工具都分不清?别说你懂数据分析!
  10. js使用canvas画五角星以及渐变色,瞎画