📝

PowerShellのアップデート

2023/04/07に公開

青いやつ?

powershell 5.1
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

「PowerShell」と聞いて起動したのが「青いやつ」で上記のような場合、それは「Windows PowerShell 5.1」かもしれません。

バージョン確認は以下のような感じ。

powershell 5.1
$ $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.19041.2673
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.2673
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

実は「PowerShell 7.x」という別のやつがいるんです。
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3
本記事は「PowerShell 7.x」についてのお話です。
まだ5.1の方もこだわりがなければ7.xに移行してみましょう!

ここからはPowerShell 7.xのおはなし

新バージョンのお知らせ

PowerShell使っていますか?
たまに起動すると以下のような新バージョンリリースの通知が表示されることがあります。

powershell
PowerShell 7.3.2

   A new PowerShell stable release is available: v7.3.3
   Upgrade now, or check out the release page at:
     https://aka.ms/PowerShell-Release?tag=v7.3.3

インストール手順

公式のインストール手順を確認します。
https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows

いくつかインストール方法があるようです。
一般的なユーザーとしては以下のどちらかでよさそうです。

  • Winget - Windows クライアントに PowerShell をインストールする場合に推奨される方法
  • Microsoft Store パッケージ - PowerShell の一時的なユーザー向けの簡単なインストール方法ですが、制限があります

Winget版が推奨とされていて、ストア版には制限があるとのこと。

いまのところストア版の制限の影響を受ける使い方はしていませんでした。
でも、ストア版は更新が遅いようなので、更新通知をさっさと消しておきたい場合は不向きそう。
ということで、コマンドで更新できたほうが楽ですし、Winget版にしようと思います。推奨みたいですし。

インストールテクノロジ

powershell
$ winget install --id Microsoft.Powershell --source winget
既存のパッケージが既にインストールされています。インストールされているパッケージ...をアップグレードしようとしています
新しいバージョンが見つかりましたが、インストールテクノロジが現在インストールされているバージョンと異なります。パッケージをアンインストールして、新しいバージョンをインストールしてください。

どうやら現在はWinget以外でインストールされていたようです。
以前ストア経由でインストールしていたかも。

既存のアンインストール

一度既存のPowerShellをアンインストールします。

powershell
$ winget uninstall PowerShell
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。

すべてのソース契約条件に同意しますか?
[Y] はい  [N] いいえ: y
見つかりました PowerShell [9MZ1SNWT0N5D]
パッケージのアンインストールを開始しています...
正常にアンインストールされました

新規インストール

powershell
$ winget install --id Microsoft.Powershell --source winget
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.3.3.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/PowerShell/PowerShell/releases/download/v7.3.3/PowerShell-7.3.3-win-x64.msi
  ██████████████████████████████   101 MB /  101 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

PowerShellでPowerShellをアンインストールするコマンドを実行したのに、その後そのままPowerShellが使えるのはなんで?

結果確認

powershell
$ $PSVersionTable
Name                           Value
----                           -----
PSVersion                      7.3.3
PSEdition                      Core
GitCommitId                    7.3.3
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Wingetのアップデートコマンド

$ winget upgrade PowerShell
適用可能なアップグレードは見つかりませんでした。
$ winget upgrade PowerShell
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.3.4.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/PowerShell/PowerShell/releases/download/v7.3.4/PowerShell-7.3.4-win-x64.msi
  ██████████████████████████████   100 MB /  100 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...

Discussion