PowerShell 7.0.0 Preview1登場

PowerShellチームは2019年5月30日(米国時間)、「PowerShell 7 Road Map|PowerShell」において、PowerShell 7の初のプレビュー版となる「PowerShell 7.0.0 Preview1」の公開を伝えた。「PowerShell/PowerShell - v7.0.0-preview.1 Release of PowerShell|GitHub」から取得可能。

執筆段階では次のパッケージやソースコードが提供されている。基本的にはWindows版、macOS版、Linux版(rpm、deb)のパッケージが提供されている。


「PowerShell 7 Preview1」には、PowerShell Core 6.2 GAにない変更がいくつか含まれているほか、最大の変更点として.NET Core 2.1から.NET Core 3.0への移行が行われている。.NET Core 3.0へ移行したことでパフォーマンスが大幅に向上したほか、WPFやWinFormを含む多くの新しいAPIが利用可能になっている。

PowerShell 7 Preview1の実行サンプル on macOS

PowerShellチームは今後月に1回のペースでPowerShell 7プレビュー版を公開するとしている。プレビュー版は先程と同じGitHubで順次公開されることになっており、PowerShell 7を試したい場合にはここから最新のプレビュー版をダウンロードすればよいことになる。

PowerShell Core 6.2からPowerShell 7へ

PowerShellチームが前回発表していたように、PowerShell Core 6.2のあとはPowerShell 7とする方向で話を進めているようだ。さらに、Windows PowerShell 5.1の代わりとして使うという方針も変わっていないようで、Windowsに同梱されているPowerShellを置き換える方向で開発を続けるようである。PowerShellチームは発表の中でWindowsチームと協力してモジュールの検証と更新を進めるとしている。

Windows PowerShellとの互換性が重要であるのは間違いのないところなのだが、それ以外の取り組みとしてPowerShellチームは次の3つの領域に投資を行っていると説明している。

  • 認証管理の簡素化。クラウド、ローカル、ハイブリッドなどさまざまな環境でさまざまなリソースにアクセスするような状況では、それぞれの状況に応じた認証を行う必要がある。理想的にはスクリプトには認証データを書き込まないことが望ましく、現在ローカルまたはリモートベースの認証処理に新しい方法の導入を検討している
  • 簡素化および統一化されたリモートロギング機能。PowerShellにはすべての操作を記録する機能がある。ただし、ログはローカルにおいて記録され、リモートに転送するにはオペレーティングごとに異なる設定を行う必要がある。オペレーティングシステムに関係なく簡単な設定でこれを実現する方法の導入を検討している
  • 新しいバージョンがリリースされていることをユーザに通知する機能。現在も古いバージョンが使われ続けているという状況があり、この状況を改善するためにユーザに新しいバージョンの存在を伝える新しい方法が必要だと考えている。この機能についてはすでにRFCが公開されており、検討が進められている。


また、PowerShell 7で解決または改善したい項目として次の内容も取り上げられている。

  • エラーのデフォルトフォーマットの改善
  • ユビキタス-OnError {ScriptBlock}パラメータ
  • チェーンコマンドに対する制御演算子
  • 三項条件式
  • Null条件付き代入
  • オブジェクト単位の並列化


PowerShell 7へ向けてWindows PowerShellとの互換性の向上と、プログラミング言語としてのPowerShellの強化という2つの方針が明確に出ていることがわかる。

今後の展開に注目

PowerShell 7がいつ登場するかは今後の開発の進行状況やコミュニティの反応を見つつ定まっていくものと見られる。GitHubを通じて月に1回ごとにリリースを実施し、特に大きな機能の実装が終わり、Windows PowerShell 5.1との互換性が確保された段階で最初のPowerShell 7が公開されるのではないかと考えられる。

最終的にどのような形でWindowsに取り込まれていくのかは現段階ではなんとも言えないが、新規開発が停止していたWindows PowerShellがPowerShell Coreをベースに再びアクティブな開発フェーズに入ったということは間違いなさそうだ。今後の動きが気になるところである。

参考資料