Microsoftは最終的に6個のプレビュー版を公開した後、2019年12月17日(米国時間)に「PowerShell 7.0.0 Release Candidate 1」を公開した。プレビュー版では多くの新機能が追加され、Windows PowerShellの時代にだけ存在していた機能の復帰も実施された。特にプレビュー6で魅力的な機能が追加、または復帰しており、その点についてはこれまで数回に分けて説明を行ってきた。

2019年12月17日に公開された候補リリースで行われたのは、エンジンやコマンドレットのアップデートおよびバグの修正、ビルドおよびパッケージングの改善などがほとんどだ。プレビュー版に存在していたような新機能の追加は行われていない。

Microsoftは当初、この候補リリースが正式公開前の最後のリリースになるだろうと説明しており、2020年1月には正式版となる「PowerShell 7.0.0 GA」を公開する予定にしていた。しかし、実際には2月末になった現在も正式版は公開されていない状況にある。

候補リリースは3までリリースされている

執筆段階で、候補リリースは3つのバージョンが公開されている。それぞれ次の日程で公開されており、ほぼ1カ月おきに新しい候補リリースが公開されていることになる。

リリース日 バージョン
2019年12月16日 PowerShell 7.0.0-rc.1
2020年01月17日 PowerShell 7.0.0-rc.2
2020年02月21日 PowerShell 7.0.0-rc.3

PowerShell 7.0.0-rc.3

Microsoftは、プレビュー版リリースや候補リリースRC1に対してはプロダクトの公開と同時に解説ブログを公開しており、対象となったバージョンでどのような新機能が追加されたのか、どのような変更が行われたのかを説明していた(ただし、ブログ公開が行われていないバージョンもある)。しかし、RC2とRC3に関してはブログが公開されていない。このため、実際にどういった問題があって候補リリースの提供が長引いているのかは不明だ。

RC2とRC2で行われた変更は、内容は異なるもののRC1に対して行われたものと系統は同じである。具体的には、エンジンの更新と修正、コマンドレットの更新と修正、ビルドおよびパッケージングの改善、テストの改善、コードのクリーンナップなどだ。

ただし、RC2とRC3に関しては注意事項として次の説明が加えられている。

バージョン 注意事項
RC2 Debian 10およびDebian 11でHTTPSでベーシック認証を行う場合、WinRMベースのリモート処理に問題が発生している。この問題に関しては現在調査を行っており、PowerShell 7 GAまでに修正を試みることにしている
RC3 powershellパッケージとpowershell-ltsパッケージを同時にインストールすると問題が発生する(#11924を参照のこと)

具体的にどういった判断が行われているかはわからないが、上記の問題が候補リリースを引き伸ばしている理由になっている可能性がある。どのバージョンまで候補リリースが公開されるかは現段階で何とも言えないが、RC3の段階ですでに不具合が確認されていることを考えると、3月にRC4が公開される可能性が高いのではないかと見られる。3月にRC4が公開されるとすれば、うまく行ったとして2020年4月にPowerShell 7.0.0 GAが公式にリリースされる可能性が高いと見られる。

PowerShell 7の注目新機能

PowerShell 7.0.0 GAの公式リリースが遅れているとは言え、遅くともWindows 10 20H1には間に合わせてくるだろうから、2020年第2四半期には正式版が利用できるようになるんじゃないかと思う。以前、RC1が公開されたときに一度取り上げているのだが、PowerShell 7で実現することになる注目の新機能を改めて次にまとめておく。

  • .NET Core 3.1 (LTS)に対応
  • ForEach-Object -Parallelによる並列処理の実現
  • 新しいバージョンのPowerShell 7が存在する場合にアップデートを通知する機能の導入
  • 新しいエラーメッセージとGet-Errorコマンドレットの導入
  • パイプラインチェーンオペレータの導入(「&&」および「||」)
  • 三項演算子の導入(a ? b : c)
  • ヌル合体演算子およびヌル合体代入演算子の導入(「??」および「??=」)
  • Windows PowerShellに存在しPowerShell Coreで削除された機能の復帰
  • Windows互換ラッパーの導入
  • Invoke-DscResourceをクロスプラットフォームに対応(実験段階)


WindowsでPowerShell 7.0.0を利用するユーザーにとっては、Windows PowerShell時代には利用できたがPowerShell Coreで利用できなくなった機能が、PowerShell 7.0.0で再び利用できるようになったという点が特に大きい。これで最新の機能を使いながら、これまでのWindows PowerShellと同じ使い方ができる。

PowerShell 7.0.0で導入される新機能はスクリプト言語としてのPowerShellの利便性を引き上げてくれる。これまでよりも記述が簡素になるという点が特に大きい。また、エラーメッセージがこれまでよりも扱いやすくなっており、ユーザーのストレスはPowerShell Coreのときよりも減るように思う。何はともあれ、早く正式版に会いたいところである。

参考資料