PowerShell 5.1 に 7.0 をインストールしてみた

PowerShell

みなさんは普段お使いの Windows PC にインストールされている PowerShell のバージョンを把握していますか?多くの WIndows 10 ユーザーの場合、バージョンは 5.1 になっています。しかし、最新の PowerShell のバージョンは 7.0 です。なぜ今のバージョンが 5.1 なのか?自動で 7.0 にバージョンアップされないのか?そのあたりを疑問に思ったので調べてみました。

まとめ
  • PowerShell には 2 系統存在する(Windows PowerShell & PowerShell Core)
  • Windows PowerShell の最新バージョンが 5.1 であり、Windows 10 標準搭載
  • バージョン 6.0 からクロスプラットフォーム (Mac, Linux, etc.) に対応
  • ただし破壊的な変更を含むため PowerShell Core 系統として進化
  • PowerShell Core の最新バージョンが 7.0
  • 5.1 と 7.0 は共存できるので、7.0 を入れてみるというのはアリ

以下、調べた内容のまとめ

当時の手元環境

PowerShell を開いた時にずっと気になってた以下の通知があります。

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

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

PS C:\>

これはきっと今の自分の環境が古いのだろうと思って、とりあえず今のバージョンを見てみました。

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.752
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

出力から、バージョン (PSVersion) が 5.1 であることがわかります。あと、後々出てきまlすが、エディション (PSEdition) が Desktop であることもここからわかります。

PowerShell のバージョン

標準でインストールされている PowerShell のバージョン

Windows に標準でインストールされている PowerShell のバージョンは公式ドキュメントに記載があります。

引用元: https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-windows-powershell?view=powershell-7#upgrading-existing-windows-powershell

ここから、OS によって入ってるバージョンが異なることと、なぜ自分の環境 (Windows 10) で PowerShell 5.1 が入っていたかが分かります。

PowerShell 6.x と 7.x

ところで、上記の表を見ただけだと、バージョン 5.1 が最新のように見えます。それなのになぜ、PowerShell 起動時に「新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6」のようなメッセージが出たのでしょうか。そこで、指定された URL を開いてみます。

長年にわたって、多くの PowerShell がリリースされてきました。 最初の Windows PowerShell は .NET Framework 上にビルドされていて、Windows システム上でしか動作しませんでした。 現在のリリースでは、PowerShell はランタイムとして .NET Core 3.1 を使用します。 PowerShell は、Windows、macOS、Linux のプラットフォームで実行されます。

引用元: https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell?view=powershell-7

ここで、現在の PowerShell には 2 つの系統があることが分かります。

まず、従来の Windows PowerShell は、.NET Framework 上で動作していて、Windows OS 上でしか動作していませんでした。この系統が、デフォルトで Windows OS にインストールされているものであり、最新バージョンが 5.1 となっています。

続いて、現在の PowerShell (Core) は .NET Core 上で動作していて、Windows OS 以外の OS (Mac, Linux, etc.) にも対応しています。バージョンには 6.x と 7.x があり、最新バージョンは 7.0 となっています(プレビュー版の 7.1 はあります)。

2 つの系統はバージョン番号で区別ができますが、厳密には .NET Core 上で動作する 5.1 もあるので、先程の出力のエディション (PSEdition) で区別するのが本当はよいようです。これが Desctop なら従来系統、Core なら現行系統となります。ただし、7.0 が出たタイミングで現行系統を PowerShell Core という名称から PowerShell という名称に変えたこともあり、(詳しい経緯は未調査ですが)今後は PowerShell (Core) 系統に絞っていくんだろうなという気配があります。

5.1 と 7.0 のどちらがいいの?

そもそも、僕は PowerShell をほぼ使わないので、バージョン 5.1 で必要十分となっています。とはいえ、ドキュメントの雰囲気やサポートライフサイクルを参照する限り、今後は .NET Core ベースの開発に注力しそうな気もしています。

そのため、そもそも使ってない人は 5.1 のままでもよいでしょうが、少しでも使ってない人は 7.0 も別途入れて、徐々に使い方に慣れた方がいいのでしょう。なお、5.1 と 7.0 で共存可能です。

PowerShell 7 は新しいディレクトリにインストールされ、Windows PowerShell 5.1 と side-by-side 実行されます。PowerShell Core 6.x がインストールされている場合、PowerShell 7 にインプレース アップグレードされ、PowerShell Core 6.x は削除されます。

引用元 : https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-7#installing-the-msi-package

PowerShell 7.0 のインストール

インストールの仕方は ドキュメント に書いてあるままで、特に迷うところはありません。ドキュメントにも長々と書いてありますが、結局のところ github から msi をダウンロードしてきて実行するだけです。

Assets まで降りていって自分の環境のものをダウンロードして…

粛々とインストールを進めていくだけです。

起動確認

従来の Windows PowerShell (5.1) は powershell という名前でしたが、PowerShell 7.0 は pwsh という名前となっています。さっそくこちらの名前で起動してみます。

PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/powershell
Type 'help' to get help.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.0.0
PSEdition                      Core
GitCommitId                    7.0.0
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

ちゃんと 7.0 が起動したことが分かります。もちろん、現在でも 5.1 を起動できます。

PS C:\> powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

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

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.752
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

余談: pwsh で出力がコピーできない!と思ったのですが、[プロパティ] → [簡易編集モード] を有効化すれば大丈夫でした。

まとめ

  • PowerShell には 2 系統存在する(Windows PowerShell & PowerShell Core)
  • Windows PowerShell の最新バージョンが 5.1 であり、Windows 10 標準搭載
  • バージョン 6.0 からクロスプラットフォーム (Mac, Linux, etc.) に対応
  • ただし破壊的な変更を含むため PowerShell Core 系統として進化
  • PowerShell Core の最新バージョンが 7.0
  • 5.1 と 7.0 は共存できるので、7.0 を入れてみるというのはアリ

タイトルとURLをコピーしました