ニュース

「PowerShell 7.3」が正式公開 ~シェル環境としての使い勝手を改善

「.NET 7」ベースの非LTSリリース

Microsoft、「PowerShell 7.3」を一般公開

 米Microsoftは11月9日(現地時間)、スクリプティング環境「PowerShell」の最新バージョン「PowerShell 7.3」を一般公開した。「PowerShell 7.3」は「.NET 7」ベースとなっており、「.NET 7」と同様、非LTSリリースとして18カ月間サポートされる。

 「PowerShell」は現在、Windows、macOS、Linuxで利用可能。「Microsoft Store」経由で「PowerShell 7.2」をインストールした場合は、「PowerShell 7.3」へ自動的に更新される。

「Microsoft Store」から入手したバージョンは、「PowerShell 7.3」へ自動更新される

 MSIインストーラーで「PowerShell 7.2」をセットアップし、「Microsoft Update」で更新を管理している場合は、引き続き「PowerShell 7.2」の利用を継続することになる。これは「PowerShell 7.2」が3年間サポートされるLTSリリースであるためだ。「PowerShell 7.3」を利用したい場合は、手動でアップグレードする必要がある。

「GitHub」などからダウンロードできるMSIインストーラー。「Microsoft Update」でアップデートを管理している場合は、引き続き「PowerShell 7.2」(LTS)の利用を継続することに

 今回のリリースのテーマは、「PowerShell 7」をシェル環境として使いやすくすることだ。

 たとえば、WindowsとMac/Linuxではネイティブコマンド(PowerShellのコマンドレットや関数ではない、実行ファイル)の引数の扱い方、とくに引用符が含まれている場合の扱いに根本的な違いがある。

 そのため「$PSNativeCommandArgumentPassing」が追加され、それぞれの環境でネイティブコマンドが期待通りに動作するように改善された。

 また、ネイティブコマンドを「PowerShell」コマンドレットに近づける努力も行われている。典型的な例はエラー処理で、ネイティブコマンドは一般的にエラーが構造化されておらず、終了コードが「0」ならば正常、「0」以外ならエラーを表すのが慣例となっている。コマンドレットならばエラーがあれば処理が停止するが、ネイティブコマンドは終了コードをユーザーがチェックして、適宜対処する必要がある。

 これに対処するため、最新版には「$PSNativeCommandUseErrorActionPreference」が追加されており、「0」以外の終了コードを「PowerShell」でエラーとしてハンドリングすることが可能。「$ErrorActionPreference」を「stop」にすれば、ネイティブコマンドでもコマンドレットでも、エラーがあれば動作が停止するようになる。