PowerShell 7.1がリリースされました

2020.11.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

先週の話ですがPowerShell 7のマイナーバージョンアップであるPowerShell 7.1がリリースされました。
PowerShell Teamからのアナウンスは以下となります。  

PowerShell 7.1の入手方法、更新方法

PowerShell 7.1の入手方法やアップデート方法はPowerShell 7の時と同じです。
GitHubリポジトリおよび各種パッケージマネージャからインストール可能です。
詳細な手順はGitHubにある手順をご覧ください。

ただ、今回Windows環境においてはPowerShell 7.1からStable版のバイナリもMicrosoft Storeから入手可能となりました。

こちらは先日お知らせしたプレビュー版とは別アプリとなります。

私としてはOS組み込みの問題も抱えてるためStable版のアプリは出ないと予想してましたが、予想に反してリリースされてしまいました。
PowerShell TeamとしてはこのStable版ストアアプリと将来の目標であるOS組み込み版をどうするかについては一切表明をしていません。
個人的には「あまりにも無計画では?」というのが率直な気持ちですが、出てしまったものはどうしようもありません。

Microsoft Store版のPowerShell 7が将来どうなるのかについては一切不明で長期的な展望は一切望めませんが、とりあえず試してみる分にはお手軽ですのでその程度のスタンスで利用するのが良いと思います。

PowerShell 7.1新機能

マイナーバージョンアップなので大きな新機能はさほどありません。
上記PowerShell Teamのブログや、以下のドキュメントをご覧いただくと良いでしょう。

こちらについては気が向いたら別記事で解説しようと思いますが、強いて今いくつか挙げるなら、

  • いくつかの試験的機能が本機能に昇格
    • PSNullConditionalOperators (NULL条件演算子)
    • PSTempDrive
  • 実行ファイル pwsh の短いパラメーター名(-s-w)の衝突回避
  • Web Cmdlets (Invoke-WebRequestInvoke-RestMethod)でTLS 1.3をサポート
  • Get-Randomコマンドレットに-Shuffleパラメーター追加

あたりが個人的には面白いかなと思います。
あと先日リリースされたPSReadLine 2.1がデフォルトで組み込まれていますのでこちらをお試しいただくのも良いでしょう。

.NET 5化と対応プラットフォーム

PowerShell 7.1はその基盤が.NET 5となり *1、性能面、.NET Frameworkとの互換性、対応プラットフォームの刷新などの改善がなされています。

PowerShell 7.1を利用可能なOS/ディストリビューションは以下の通りとなっています。

  • Windows 8.1/10 (including ARM64)
  • Windows Server 2012 R2, 2016, 2019, and Semi-Annual Channel (SAC)
  • Ubuntu 16.04/18.04/20.04 (including ARM64)
  • Ubuntu 19.10 (via Snap package)
  • Debian 9/10
  • CentOS and RHEL 7/8
  • Fedora 30
  • Alpine 3.11+ (including ARM64)
  • macOS 10.13+
  • 以下はコミュニティサポートのみの提供
    • Arch Linux
    • Raspbian Linux
    • Kali Linux

Ubuntu 20.04にやっと対応してくれたのが個人的に嬉しいです。

サポートサイクルについて

PowerShell 7.0.xは長期サポート版であるLTSバージョンでしたが、PowerShell 7.1は非LTSバージョンとなります。
これは基盤となる.NET 5が非LTSバージョンであるためです。
このためサポート期間はMicrosoft Modern Lifecycle Policyに従います。

現時点での各バージョンのサポート期限は以下の通りです。

バージョン サポートポリシー EOL
7.1 Non LTS .NET 5のEOL同じになる予定 (.NET 6リリースの3ヶ月後で現時点の計画だと2022年2月)
7.0 LTS 2022年12月3日
6.2 Non LTS サポート切れ (2020年9月4日)
6.1 Non LTS サポート切れ (2019年9月28日)
6.0 Non LTS サポート切れ (2019年2月13日)

最後に

以上となります。

.NET 5化をはじめとして多くの機能改善が成された新バージョンのリリースは喜ばしい限りです。
ただ、一方で未来に向けてPowerShell自体をどうしていきたいのかという展望はほとんど表明されず *2先述のStable版ストアアプリの(私から見て)不用意なリリースを見てしまうと失望や悲観の方が勝ってしまっているのが私個人としての率直な気持ちです。

今回は非LTSリリースですし基盤となる.NETにおいても次のLTSリリースである.NET 6がある意味で真の.NET統合ともいえるバージョンになるので、PowerShellとしても次のLTSリリースからが本番なのかもしれません。
それまでに私の悲観を覆す良いニュースが届くことを切に望みます。

脚注

  1. ちなみにPowerShell 7.0.xは.NET Core 3.1製
  2. 特定機能の実装方針は表明されてますが、そういう話よりもっと俯瞰的な展望が足りていない...