PowerShell 7.0登場
Microsoftは2020年3月4日(米国時間)、Windows PowerShellの正式な後継バージョンとなるPowerShell 7系の初の一般公開リリース「PowerShell 7.0」の公開を発表した。MicrosoftはすでにWindows PowerShellをオープンソース化したバージョンとして「PowerShell Core」を公開している。PowerShell 7はPowerShell Coreの後継バージョンであり、かつ、Windows PowerShellの正式な後継バージョンとも位置付けられている。
PowerShell 7.0の新機能については本連載で長らく取り上げてきた。今回はMicrosoftがアナウンスの中で挙げた新機能を改めて取り上げておく。
- ForEach-Object -Parallelを使ったパイプラインの並列処理機能
- 三項演算子
- パイプラインチェーン演算子
- ヌル合体演算子
- ヌル合体代入演算子
- 新バージョン通知機能
- Windows PowerShellとの互換機能
- PowerShell Coreで削除されたコマンドレットの復帰
- エラーメッセージの改善
PowerShell 7.0では次のOSがサポート対象とされている。
- Windows 10
- Windows 8.1
- Windows 7
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008
- macOS 10.13以降
- Red Hat Enterprise Linux 7以降
- CentOS 7以降
- Fedora 29以降
- Debian 9以降
- Ubuntu 16.04以降
- openSUSE 15以降
- Alpine Linux 3.8以降
今のところ、パッケージはGitHubの次のページで配布されている。
すでにPowerShell 7.0.0のプレビュー版や候補リリースがインストールされているなら、一旦インストールしてからPowerShell 7.0をインストールすることでこの一般公開版を使用することができる。
一般公開を優先、以降はプレビュー版を月1公開
PowerShell 7.0のライフサイクルは使用している.NETランタイムのライフサイクルと同じなので、2019年12月3日(.NET Core 3.1のリリース日)から約3年間となる。これは長期サービスリリース(LTS)であることを意味している。当面の間はPowerShell 7系がWindows 10で使われることになりそうだ。
候補リリースの出方と内容を見る限り、あと1回か2回は候補リリースが出るのではないかと思われたが、どうやらMicrosoftはタイムラインのほうを優先して先にPowerShell 7.0の一般公開を行ったと見られる。Microsoftはすでに次のプレビュー版としてPowerShell 7.1プレビュー版の開発に取り組んでおり、そちらで今回のリリースに間に合わなかったバグ修正や新機能の追加などを行うとしている。候補リリースを重ねるのではなく、いったん一般公開版を出してから、次のバージョンとして修正や新機能の導入をすることにしたわけだ。Microsoftは「月1回をめどにプレビュー版をリリースしていく」と説明している。
「Core」という「エディション」は残す
これまでのMicrosoftのアナウンスから、PowerShellを巡る歴史と名称は次のように推移していくのではないかと考えられていた。
- Windows PowerShell - Windows 10の初期から同梱されてきたPowerShell。バージョン5系であり、すでに開発は終了している。今後はバグ修正のみが行われ、基本的に互換性を保持する目的で維持される
- PowerShell Core - Windows PowerShellのオープンソース版に相当。Windows以外にmacOSやLinuxにも対応。バージョン6系であり、PowerShell 6.2系で開発を終了
- PowerShell 7 - PowerShell Coreの後継バージョンであり、Windows PowerShellの後継バージョン。今後はPowerShell 7のみを開発していくことになる
今後開発されるのはPowerShell 7とその後継バージョンであり、これだけが唯一無二のWindows公式PowerShellとなる。これについてはMicrosoftが先のアナウンスにおいて次のように明記している。
(筆者意訳: .NETが.NET 5で行ったのと同じように、PowerShell 7はWindows PowerShellとの後方互換性を最大限実現することができたと考えている。そのため、PowerShell 7およびこれ以降のバージョンが本当のPowerShellになると言える)
ややこしいのは次の説明だ。PowerShell Core 6の「Core」という表記は今後使われることがなくなると思われていたが、説明によるとまだ使い続けるように見える。
(筆者意訳: PowerShell 7はWindows PowerShellとPowerShell 6系/7系が異なることを示すために「Core」というエディション名とともに記述されることになるが、今後一般的には「PowerShell 7」という表記が使われることになる)
Windows PowerShellとそれ以降という区別をつけるために、Windows PowerShellとPowerShell Coreという表記は今後も使うという。この説明が正しければ、PowerShell CoreはPowerShell Core 6系以降の全てのバージョンを指すということになり、執筆現在であればPowerShell CoreはPowerShell Core 6とPowerShell 7の双方を指すことになる。
しかし、一般的には「PowerShell Core 7」ではなく「PowerShell 7」という表記を使うとしている。ややこしいような気がするが、そのように説明されているので、そうなのだろう。PowerShell Coreという名称が使われる場合にはしばらく注意する必要があるかもしれない。