MicrosoftのPowerShell 7を巡る状況はこの数年、不思議な状況が続いている。Windows 10には「Windows PowerShell 5.1」と呼ばれるシェルが搭載されている。当然、このシェルがMicrosoftが利用を推奨しているシェルだと思いがちだが、実際には起動すると別のシェルを使うようにというメッセージが表示される。

Windows PowerShell

表示されるメッセージはアップデートされていないので「PowerShell 6を使うように」と言っているように見えるが、これはオープンソースで開発が行われているPowerShellのことであり、要するにPowerShell 7を意味している。

Windows 10を管理するという重要なシェルだが、デフォルトでインストールはされておらず、GitHubからパッケージ版をダウンロードしてきて使えというわけだ。

MicrosoftはすでにWindows Powershellの開発を終了している。同社はこのシェルを後方互換性維持の目的のみで提供しており、すでに利用を推奨していない。かといって推奨されているPowerShell 7は依然として開発段階にあり、ユーザーが手動でインストールする必要がある。Microsoftがデフォルトでの利用を推奨しているシェルであるにもかかわらず、あまりにも不便な状況だ。

なお、当然ながらコマンドプロンプトも利用は推奨されていない。このシェルも基本的には後方互換性確保の目的で提供されている。

しかし、だ。現状ではPowerShell 7は自分でインストールしなければならないし、PowerShell 7を使うにはWindows Terminalなど、これまた自分でインストールする必要があるターミナルアプリケーションを用意する必要がある。システムを制御するデフォルトのシェルと位置付けられている割には、動かすまでに手間がかかるのだ。

システムセットアップ時にシェルが必要になることは多い。現状はPowerShell 7はユーザーが明示的にインストールしていない限り使うことができないのだから、結局Windows PowerShellやコマンドプロンプトが使われるのだ。Wingetを使おうとしたって、PowerShell 7を自らインストールしてあるのでなければ、Windows PowerShellかコマンドプロンプトを使うことになる。何とも言えない不思議な状況だ。

PowerShell 7がWindows Updateへ

しかし、ついにその時は来た。Microsoftは2021年6月16日(米国時間)、ついにPowerShell 7をWindows Update経由で提供できるようにする旨を発表したのだ。

Preview updating PowerShell 7.2 with Microsoft Update | PowerShell Team


この取り組みが実現すると、Windows Update、Windows Update for Business、WSUS、SCCMといったMicrosoftのソフトウエアアップデートの仕組みを経由してPowerShell 7が取得できるようになる。まだアドバンスドユーザーが利用できるようになった状況だから、リテール版のWindows 10に落ちてくるのは2021年秋以降になると見られる。しかし、これは大きな進歩だ。今後は多くのユーザーがデフォルトでPowerShell 7を使える日が来ることを意味している。

Windows Updateへの登録はPowerShell 7がマイルストーンに到着した証

MicrosoftとしてはPowerShell 7をできるだけ早いタイミングでWindows Update経由での提供に踏み切りたかったものと思われる。それを妨げていたのはWindows PowrShell 5.1との互換性問題だろう。Windows PowerShell 5.1からPowerShell 7へ切り替えるとなると、後方互換性を確実に維持する必要がある。それが一定のマイルストーンに達したからこそ、今回の発表が行われたと考えられるのだ。

PowerShell 7はWindowsのみならずLinuxやMacといったほかのOSでも動作する。このため、開発の初期の段階でWindowsでのみ機能する部分は取り除かれている。しかし、Windowsのシェルとして採用するとなると、初期に切り捨てた部分を何とかする必要が出てくるのだ。

マルチプラットフォームとして開発を進めている以上、Windowsで機能するようにした点に関してはLinuxとMacでも動作するように考える必要がある。この辺りを細かく突き詰めていくと、開発そのものは難しくないとしても、内部のコードの整理や仕組みの整理などには時間がかかることになるだろう。しかし、それもやっと基準をクリアしたということだ。

PowerShell 7とWindows Terminalの時代がやってくる

Windows Terminalの開発もやっと最初のマイルストーンに到達し、Windows 10にデフォルトで取り込まれる方向で作業が進んでいる。そしてPowerShell 7も同じポジションになる予定だ。これでこれまではユーザーが自分で用意する必要のあったPowerShell 7とWindows Terminalが最初から提供されている状況になる。ようやく待ち望んだ状況が実現することになりそうだ。

Windows TerminalはWSLで動作するUbuntuを利用するためのターミナルとしても申し分ないし、SSH経由でほかのOSにログインするためのターミナルとしても申し分ない。Hyper-Vなどの仮想化アプリケーションを使えばLinux以外のOSも動かすことができるし、そういった環境にログインして作業する環境としてWindows TerminalとPowerShell 7はなかなか便利なのだ。

LinuxのGUIアプリケーションを実行できるようにする取り組みを着実に進んでいる。これからWindows TerminalとPowerShell 7はWindows 10を利用する開発者にとってますます重要な存在になってくるはずだ。まだ使ったことがないのであれば、ぜひこういったタイミングで試してみていただきたい。