はじめに
Windows11 22H2からPowerShellを起動すると、上記のようなメッセージが走るようになります。びっくりマーク付きで強めに詰められてますね。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
表示されているURLにアクセスすると下記のページでPowerShell 7系のインストール方法が説明されています。
MSIでのインストーラーやZIPから展開することもできますが、Microsoftとしては Windows クライアントにへのインストールはwinget
の使用を推奨しているようです。
というわけで、今回はPowerShell 5系からwinget
コマンドでPower Shell 7系をインストールしてみます。
前準備
- 現在のPowerShellのバージョン確認
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.22621.2506
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.2506
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
- 社内プロキシなどが存在している場合は下記ページを参照にプロキシ認証設定をしてください
-
winget
の特定のバージョンには不具合がありますので、確認と対策をしておきましょう
作業手順
- PowerShellを管理者権限で起動
- 下記コマンドでインストールするPowerShellのバージョン確認とインストール規約の同意を行います
Preveiw版も表示されますが、無難に通常版をインストールすることにします。
> winget search Microsoft.PowerShell
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。
すべてのソース契約条件に同意しますか?
[Y] はい [N] いいえ:y
名前 ID バージョン ソース
------------------------------------------------------------------
PowerShell Microsoft.PowerShell 7.4.1.0 winget
PowerShell Preview Microsoft.PowerShell.Preview 7.4.0.101 winget
- 下記コマンドでPowerShell 7系のインストールを実行
> winget install --id Microsoft.Powershell --source winget
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.4.1.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/PowerShell/PowerShell/releases/download/v7.4.1/PowerShell-7.4.1-win-x64.msi
██████████████████████████████ 103 MB / 103 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
これでインストール作業は完了です。
あとはアプリからPowerShell 7系が存在するか確認しましょう。
アプリ名が「Windows PowerShell」だと5系、「PowerShell」だと7系になります。念のため $PSVersionTable
でバージョン確認しておくといいでしょう。
PowerShell 7 が起動しないんだけど
PowerShell5系と7系はサイドバイサイド、つまり共存が可能となっています。
ですので、いつも通りにWindowsTerminalからPowerShellを起動しても5系が出てくるということです。
というわけで、WIndowsTerminalのデフォルトのターミナルをPowerShellにしたい場合は以下の感じでやっていきましょう。
設定→スタートアップ→既定のプロファイル「PowerShell」にしましょう。
ところで5系と7系で何がちがうん?
大きく違うところはオープンソース化されて、LinuxやMacにも対応した点とされています。
LinuxやMacからPowerShellでWindows serverにログインしてCUIだけで操作を完結させたい、つまりMicrosoftとしてはWindows severの需要や裾野みたいなものを拡げたいのかなと個人的には考えられますね。
それと5系で使用できたコマンドの一部が7系では使えなくなってる点にも注意です。