PowerShell 7のアップデート方式に関する私的まとめ

2022.12.20

しばたです。

最近のPowerShell 7のアップデート方式に関して気になる点があったものの、公式にまとまったドキュメントが無かったので自分で調べることにしました。

PowerShell 7のリリース種別

2018年にPowerShell Core 6が正式リリースされて以降PowerShell本体のアップデート方式は何度か見直されています。

最初は全てのプラットフォームにおいて単一バージョンでの管理でしたが、PowerShell Core 6.1になる頃に安定版とプレビュー版でインストーラーが分離されました。

その後PowerShell 7から基盤となる.NET (Core)のサポートサイクルに合わせる形で長期サポート(LTS)バージョンが提供される様になりました。

2022年現在においては2種類のインストーラーで3種類のバージョンを扱う形となっており、ざっくり以下の様になっています。

  • 安定版インストーラー
    • 最新バージョン (非LTSバージョン)
    • LTSバージョン
  • プレビュー版インストーラー
    • プレビューバージョン

PowerShell 7のアップデート方式

ここから本題に入ります。

各プラットフォームにおいて上記のインストーラーと利用可能バージョンの組み合わせが結構ややこしいことになっているので順に解説していきます。

Linux環境

Linux環境におけるPowerShellの更新は各種パッケージマネージャー(aptやyumなど)を使う形となっています。
以前は安定版のpowershellとプレビュー版のpowershell-previewの2種類だけのパッケージ提供でしたが、本日時点では

  • 最新版 : powershell
  • LTS版 : powershell-lts
  • プレビュー版 : powershell-preview

の3種類のパッケージが提供されています。

例えばUbuntu(apt)環境であれば以下のコマンドでLTSバージョンをインストール可能です。

# 事前に必要な設定は実施済み

# LTS版PowerShellをインストール
sudo apt-get install -y powershell-lts

# 以後は apt-get update でLTSバージョンが更新される

Linux環境においてはpowershellpowershell-ltsという形で最新バージョンとLTSバージョンでパッケージ自体が分離しています。
ただ、両者は提供するバージョンが異なるだけでインストーラーの実体としては同一のため両方を同時にインストールしようとすると上書きエラーが発生してしまいます。

このためどちらか片方のみを選ぶ形になります。

そしてpowershell-ltsが提供され始めた時期はパッケージマネージャーによって異なります。
あまり無いケースだとは思いますが、古いLTSバージョンをインストールする必要がある場合に未提供なことがありますのでご注意ください。

Mac環境

Mac環境ではHomebrewを使った場合のみ更新可能です。
Homebrewを使わない場合は手動で適宜必要なバージョンをダウンロードし上書きインストールする必要があります。

本日時点のHomebrewでは

の2系統提供されています。
Homebrew Fomulaのメンテナンスは完全に有志により行われておりMicrosoftは関与してない模様です。

Windows環境

最後にWindows環境についてです。

Windows環境では多くの手段でPowerShellをインストール可能なものの、その更新手段については全然文書化されていませんでした。
このため実際の挙動から内容をまとめています。

1. Microsoft Store版PowerShell

Microsoft Store版のPowerShellは

の2系統提供されており、常にそれぞれの最新バージョンを使う様に自動更新されます。

2. MSIインストーラー版PowerShell (WinGet)

Windows Package Manager Client(WinGet)自体はMicrosoft公式ツールですが、各アプリケーションManifestの管理は有志により行われています。
PowerShellに関しては過去バージョンは有志によりManifestが更新されてましたが今はPowerShell Teamの方が更新してくれています。

提供バージョンについては

の2系統提供されています。

3. MSIインストーラー版PowerShell (Microsoft Update)

MSIインストーラー版PowerShellはPowerShell 7.2からMicrosoft Updateと連携してWindows Update経由で自動更新することが可能になっています。

この場合の挙動がちょっと厄介で、現在インストールされているバージョンによって更新対象が以下の様に変化します。

  • 通常版インストーラー
    • 現在インストールされているバージョンがLTSバージョンの場合 : 最新のLTSバージョンに更新
    • 現在インストールされているバージョンが非LTSバージョンの場合 : 最新バージョンに更新
  • プレビュー版インストーラー
    • 最新のプレビューバージョンに更新

例えば、本日時点ではPowerShell 7.3.1が最新バージョン、PowerShell 7.2.8がLTS版の最新バージョンなのですが、この場合は以下の挙動となります。

  • PowerShell 7.2.7 (LTS) がインストール済みの場合 → PowerShell 7.2.8 (LTS) に更新
  • PowerShell 7.3.0 がインストール済みの場合 → PowerShell 7.3.1 に更新

余談になりますがMicrosoft Updateカタログを確認するとPowerShell 7.3がリリースされた後はPowerShell 7.2系の更新(PowerShell 7.2.8)が「PowerShell LTS」になっていることが見て取れます。

こういった細かいところにも随時変更が入っています。

最後に

以上となります。

PowerShell Core 6がリリースされてからもうすぐ5年となり「流石に5年も経つとややこしいことになるな」と言うのが率直な感想です。

本記事の内容が皆さんの役に立てば幸いです。