PowerShell 7.2の特徴

PowerShell 7.2は.NET 6で構築されている。.NET 6をベースにしたことにより、パフォーマンスが向上しているほか、バグが修正され、スクリプトで新しいAPIが使用できるようになった。PowerShell 7.2の主な新機能や変更点は、次の通りだ。

  • WindowsにおけるMicrosoft Updateのサポート
  • サポートされているほとんどのLinuxディストリビューションをカバーする新しいユニバーサルインストーラパッケージの導入
  • ネイティブコマンドの引数処理の改善
  • ANSI FileInfoカラーサポートの導入
  • タブ補完機能の改善
  • PSReadLine 2.1とPredictive IntelliSenseを統合
  • 7つの実験的機能を通常機能に変更させ、1つの実験的機能を削除、新たに2つの実験的機能を導入
  • 使いやすさを向上させるいくつかの変更を実施
  • DSCをPowerShell 7.2から分離


前回は、これらの変更点のうち特にMicrosoft Updateとの統合について取り上げた。今回はそれ以外の注目の変更点について取り上げておく。

入力の利便性が大幅アップ - 推測入力機能(実験段階)

PowerShell 7.2ではまだ験段階の機能となっているため、利用するには明示的に有効化する必要があるのだが、PowerShellをインタラクティブシェルとする場合にはキラーコンテンツとなり得る機能が追加された。入力履歴を利用した入力予測機能だ。

Linuxでよく使われるシェルは「bash」だが、そうした多機能インタラクティブシェルの一つに「fish」と呼ばれるシェルがある。fishはLinuxやMacといったUNIX系OSで使われるシェルとしては最後発にあたるもので、設定なしで最初から便利な機能が有効になっている。その機能の一つに、履歴やコンテキストを加味した自動補完機能がある。コマンドの入力を始めると、過去の入力や作業している場所などのデータに基づいて入力予測を薄い文字で表示するというもので、「Ctrl」+「F」でそれが自動入力される。作業しつつ、欲しいコマンドが表示されていたら「Ctrl」+「F」を押す。一度慣れてしまうと抜け出すことのできない便利さだ。

PowerShell 7.2には、これと同じような機能が導入された。PowerShellをデフォルトのインタラクティブシェルとして使う上でキラーコンテンツになり得ると言って良いだろう。

この機能を利用するには、次のようにコマンドレットを入力して機能を有効化する必要がある。

Set-PSReadLineOption -PredictionSource History

入力予測機能を有効化したところ

この状態で「S」と入力すると、ターミナルの表示が次のようになる。入力した「S」以降に、薄く入力予測が表示されていることが確認できるだろう。先ほど入力したコマンドレットが入力補完候補として表示されているのだ。

入力予測が表示されている

この段階で「→」キーを押すと、次のように補完入力が行われる。「→」というキーも直感的で扱いやすい。

「→」を押すことで予測が入力される

インタラクティブシェルでは意外と同じコマンドを入力するものだ。このように自動的に入力予測が表示されると、入力の手間を大幅に省くことができる。筆者としては、PowerShellに最も欲しかった機能の一つであるだけに、PowerShell 7.2で導入されるのは非常に喜ばしい。今後さらに賢い補完が行われていくことを期待してしまう。

ANSIエスケープシーケンスサポートの強化

ターミナルではテキストの装飾を行う方法としてANSIエスケープシーケンスが使われることが多い。この機能を使うことで文字や背景に色を付けたり、文字をボールドで表示したりと、さまざまな強調効果、または区別ができるようになる。

PowerShell 7.2ではこの機能が強化されており、さらに、デフォルトでANSIエスケープシーケンスを使ったカラフルな表示が行われるようになった。

ANSIエスケープシーケンスを活用した出力がデフォルト化

このANSIエスケープシーケンスを使うための設定は「$PSStyle」という組み込み変数に書き込まれている。$PSStyleを表示させると、次のようにどのような設定が行われているかを確認することができる。この値を変更すれば、自分の求める色や文字形状の変更(通常、ボールド、斜体など)、背景色などへ変更することができる。

$PSStyleの中身

デフォルトのANSIエスケープシーケンスの設定を変更する必要に迫られる可能性はそれほど高くないと思うが、例えばLinuxのシェルやlsコマンドの出力と同じ色に揃えたいといった場合には、$PSStyleをカスタマイズすることで近づけることができる。

PowerShell 7.2のインストール方法

PowerShell 7.1からPowerShell 7.2へアップグレードする方法については、前回「Winget」を使う方法と取り上げた。アンインストールしてからインストールするか、そもそもまだPowershell自体をインストールしていない場合は、いくつかの方法のなかから選ぶことになる。

さまざまな方法があるので、次のドキュメントからやりやすいものを選んでいただきたい。


Windowsを使っているならMicrosoft Storeからインストールする方法が簡単だ。次のアップデートからは自動的にアップデートがかかると見られているし、管理は今よりも簡単になるはずだ。

長期サポートバージョンを使っていく方法もアリ

2021年11月にPowerShellの最新版となる「PowerShell 7.2」の提供が始まったわけだが、今回のリリースはマイナーバージョンが偶数番号のリリースであるため、長期サポートバージョンとなる。そのサポート期間は3年間なので、今のところ2024年末ごろまでのサポートが予定されている。長期に渡って同じバージョンを使い続けたいのであれば、PowerShell 7.1からPowerShell 7.2へアップグレードしておいたほうが良いだろう。

マイナーバージョンが偶数番号が長期サポートバージョンなので、PowerShell 7.2の前はPowerShell 7.0が長期サポートバージョンだ。PowerShell 7.0のサポート期間は後1年間残っているので、長期サポートバージョンを渡り歩いていくなら、あと2年以内にPowerShell 7.0からPowerShell 7.2へアップグレードすれば良いことになる。PowerShell 7.2にも今後不具合の報告などが上がってくる可能性があるので、しばらく様子を見て、バグがなくなってきた辺りでPowerShell 7.0からPowerShell 7.2へアップグレードするというのも一つの方法だ。安定した利用を続けたい場合には、もうちょっと様子を見てからのアップグレードで良いと思う。

なお、PowerShell 7.1はマイナーバージョンが奇数であり、通常のサポート期間だ。こちらは1年間のサポートライフサイクルであり、早期にPowerShell 7.2へアップグレードする必要があることになる。

参考