PowerShell 7.0.0 RC登場

Microsoftは2019年12月16日(米国時間)、「Announcing the PowerShell 7.0 Release Candidate | PowerShell」において、PowerShell 7の最新リリース候補版(RC: Release Candidate)となる「PowerShell 7.0.0 Release Candidate」の公開を伝えた。このバージョンは『Go Live』リリースとされており、2020年1月に一般公開版(GA: General Availability)が公開されるまで、正式に運用環境がサポートされることになる。

PowerShell 7.0.0 RC / Windows 10

Microsoftは、「重大な問題が発生しない限り、PowerShell 7.0.0の一般公開版は2020年1月に公開する」としている。現在のところPowerShell 7.0.0 RCに重大な問題は発生しておらず、このままいけば2020年1月にPowerShell 7.0.0 GAが公開される見込みだ。

今後MicrosoftがPowerShell 7の配布をどのように実施するのはわからないが、フィーチャーアップデートでデフォルトの機能として導入するとともに、Microsoft Store経由で細かいアップデートの提供を実施していくことになるのではないかと考えられる。どのような形態が取られるにせよ、以後はWindows PowerShellではなくPowerShell 7がWindows 10におけるデフォルトのPowerShell実装系という扱いになっていくだろう。

PowerShell 7の注目ポイント

MicrosoftはPowerShell Core 6からPowerShell 7の実装を進めてから、このバージョンに数々の新機能を追加してきた。Windows PowerShell 5.1との互換性向上というのが必須事項になっているものの、それ以外に追加されたさまざまな新機能も注目に値するものに仕上がっており、プログラミング言語としての機能が改善されている。

PowerShell 7で注目されることになると見られる主な変更点や新機能は次のとおり。

  • 基盤プラットフォームを.NET Core 3.1 (LTS)へアップデート
  • パイプラインチェーンオペレータの導入(&&、||)
  • 三項演算子の導入(A ? B : C)
  • ヌル合体演算子およびヌル合体代入演算子の導入(??、??=)
  • ForEach-Object -Parallelによる並列処理機能の導入
  • Windows互換ラッパーの導入
  • 新しいバージョンを検出し通知する機能の導入
  • 利便性に優れた新しいエラービューとGet-Errorコマンドレットの導入
  • Out-GridViewや-ShowWindowsといった以前のWindows PowerShellに導入されていたGUI関連コマンドレットを復帰(Windowsプラットフォームのみ)
  • クロスプラットフォームInvoke-DscResourceの導入(実験段階)


プログラミング言語としての基本的な機能はWindows PowerShellやPowerShell Core 6とほとんど変化していない。新しく導入された機能はシンタックスシュガーに近い位置づけのものだが、これらの機能が導入されたことでスクリプトを短くまとめることができるようになった。

.NET Core 3.1への移行、さらに.NET 5へ

PowerShell 7の最大の特徴の1つは、ベースプラットフォームを.NET Core 3.1へアップグレードした点にある。.NET Core 3.1にアップグレードしたことで、PowerShell Core 6で消えてしまったいくつかのコマンドレットが復活することになり、Windows PowerShellとの互換性向上に寄与した。またPowerShell 7の開発チームは.NET開発チームと協力し、PowerShell 7のパフォーマンス向上にも取り組んできた。

.NETのバージョンアップは通常困難を伴うことが多かったが、.NET Core 2.1から.NET Core 3.0への移行は比較的簡単に済んでいる。.NET Core 3.0から.NET Core 3.1への移行はさらに簡単だったとされている。Microsoftは.NET Core 3以降、.NETに関連する技術を統合して『.NET 5』に移行する計画を発表しているが、PowerShell 7もこの動向に合わせて.NET 5へ移行していくことが予定されている。

.NET SDK Dockerコンテナに含まれるPowerShell

PowerShell 7の開発チームは.NET SDK Dockerコンテナの一部としてPowerShellを同梱する取り組みも進めてきた。これはPowerShell 7というスクリプト言語でアプリケーションのビルド、テスト、デプロイといった操作ができることを意味している。

.NET SDK Dockerコンテナイメージに含まれるPowerShellは随時アップデートされることになる。次のアップデートではPowerShell 7.0.0 RCが同梱され、2020年1月以降はPowerShell 7.0.0 GAが同梱されることになる。

.NETグローバルツールでPowerShell 7をインストール

.NETグローバルツールを使うとコマンドベースでPowerShell 7をインストールすることができる。現在利用できるコマンドは次の通りだ。

コマンド 内容
dotnet tool install —global PowerShell —version 7.0.0-rc.1 PowerShell 7.0.0 RCをインストール
dotnet tool update —global PowerShell —version 7.0.0-rc.1 PowerShell 7.0.0 RCへアップデート

2020年1月にPowerShell 7.0.0 GAが公開された以降は、次のコマンドが利用できるようになる見通し。

コマンド 内容
dotnet tool install —global powershell PowerShell 7をインストール
dotnet tool update —global powershell PowerShell 7の最新版へアップデート

MicrosoftはPowerShell 7をWindows PowerShell 5.1の後継のみならず、LinuxサーバやmacOSでも利用できるスクリプト言語として拡充する姿勢を見せている。仮想環境で動作するLinuxやアプリケーションを管理する方法として、PowerShell 7の利用拡大を考えていると思われる。

実際にどの程度使われることになるかは今後の展開次第ということになるが、すでにWindows以外のプラットフォームで利用できるスクリプト言語として成熟し始めていることには注目しておく必要がある。

参考資料