Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説

本記事では、PowerShellにはどのようなバージョンが存在するのか、Windows PowerShellPowerShell Coreの違いは何か、そしてローカルまたはリモートコンピューターにインストールされているPowerShellのバージョンを確認する方法について詳しく解説します。

Windows PowerShellとPowerShell Coreの歴史とバージョン一覧

PowerShellは、Windows 7 SP1およびWindows Server 2008 R2 SP1以降のすべてのWindowsバージョンにデフォルトでインストールされています。以下の表に、これまでにリリースされたPowerShellのバージョン一覧をまとめました。

PSバージョン 備考
PowerShell 1.0 Windows Server 2003 SP1およびWindows XPに手動でインストール可能
PowerShell 2.0 Windows Server 2008 R2およびWindows 7
PowerShell 3.0 Windows 8およびWindows Server 2012
PowerShell 4.0 Windows 8.1およびWindows Server 2012 R2
PowerShell 5.0 Windows 10 RTMにプリインストールされ、Windows Update経由で自動的に5.1へ更新
PowerShell 5.1 Windows 10(Build 1709以降)およびWindows Server 2016に組み込み
PowerShell Core 6.0 / 6.1 .NET Coreベースの次世代クロスプラットフォーム版。サポート対象のすべてのWindowsバージョンに加え、macOS、CentOS、RHEL、Debian、Ubuntu、openSUSEにもインストール可能
PowerShell Core 7.0 2020年3月にリリースされた最新版(.NET Core 2.xの代わりに.NET Core 3.1を採用)

旧バージョンのWindowsに、より新しいPowerShellを手動でインストールすることも可能です。その場合は、Windows Management Framework(PowerShellはその一部です)の該当バージョンをダウンロードしてインストールしてください。

なお、ここ数年、Microsoftは従来のWindows PowerShellの開発を停止し(バグ修正とセキュリティ更新プログラムのみ提供)、オープンソースのクロスプラットフォーム版であるPowerShell Coreの開発に注力しています。

Windows PowerShellとPowerShell Coreの違いとは?

  1. Windows PowerShell.NET Frameworkベースです(例:PowerShell 5には.NET Framework v4.5が必要なため、インストールされているか確認してください)。一方、PowerShell Core.NET Coreベースです。
  2. Windows PowerShellはWindows OSでのみ動作しますが、PowerShell Coreクロスプラットフォーム対応のため、Linux上でも動作します。
  3. PowerShell CoreはWindows PowerShellと完全な互換性があるわけではありませんが、Microsoftは以前のPSコマンドレットやスクリプトとの後方互換性の向上に取り組んでいます(PowerShell Coreへの移行前に、既存のPS1スクリプトをテストすることを推奨します)。PowerShell Core 7はWindows PowerShellとの互換性が最も高いバージョンです。
  4. PowerShell ISEエディターはPowerShell Coreスクリプトの編集には使用できません(代わりにVisual Studio Codeを利用してください)。
  5. Windows PowerShellは今後新機能が開発されないため、PowerShell Coreへの移行を検討することを推奨します。

コンソールでPowerShellのバージョンを確認する方法

コンピューターにインストールされているPowerShellのバージョンを確認する最も簡単な方法は、次のコマンドを実行することです。

host

表示結果のVersionプロパティの値を確認してください。以下のスクリーンショットは、Windows Server 2016と同様にPowerShell 5.1がデフォルトでインストールされているWindows 10で実行した例です。

PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説

または、次のコマンドでも確認できます。

$PSVersionTable

PowerShellのバージョン値のみを取得したい場合は、次のようにします。

$PSVersionTable.PSVersion.major

(この例では、クリーンインストールしたWindows Server 2008 R2でPSVersion 2.0が表示されています)

PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説

$PSVersionTableコマンドは、PowerShell CoreでもOSを問わず正しく動作します。

また、レジストリからインストールされているPowerShellのバージョンを確認することもできます。その場合は、Get-ItemPropertyコマンドレットを使用して、レジストリキーHKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine内のPowerShellVersionパラメーターの値を取得します。

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説

この方法は、Windows Server 2012/Windows 8以降の環境で動作します。

Windows Server 2008 R2/Windows 7の場合は、別のレジストリキーからパラメーターの値を取得してください。

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説

インストールされているPowerShell Coreのバージョンを取得するには、次のコマンドを使用します。

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion

リモートコンピューターのPowerShellバージョンを確認する方法

リモートホストのPowerShellバージョンを確認するには、$PSVersionTable環境変数の値を使用するか、レジストリから直接情報を取得してください。その他の方法では誤ったデータが返される場合があります。

Invoke-Commandコマンドレットを使用してPowerShell Remoting経由で、リモートコンピューターにインストールされているPowerShellのバージョンを取得できます。

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
5     1     14393 3383     mun-dc01

次のスクリプトを使用すると、複数のコンピューターにインストールされているPowerShellのバージョンを一括で取得できます(リモートコンピューターの一覧はプレーンテキストファイルで指定します)。

Invoke-Command -ComputerName (Get-Content C:\PS\host_list.txt) -ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}

または、Get-ADComputerでドメイン内のコンピューター一覧を取得し、それらのマシンのPowerShellバージョンをリモートで確認することもできます。

$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase 'OU=servers,OU=Munich,dc=woshub,dc=com').Name
Invoke-Command -ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

PowerShellスクリプトで特定のPSバージョンの機能を使用している場合は、スクリプトを別のPowerShellバージョンで強制的に実行させることができます。例えば、PowerShell v3モードでコンソールを起動するには、次のコマンドを実行します(.NET Framework 3.5がインストールされている必要があります)。

PowerShell.exe -version 3

特定のPSバージョンのコマンドレットや機能に依存するスクリプトやコマンドを実行する場合は、自分の環境のPowerShellバージョンを把握しておくことが重要です。スクリプト内でインストールされているPowerShellのバージョンを検出し、それに応じて処理を分岐させたい場合は、次のようなPSスクリプトが利用できます。

$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2" )
{
write "You are using Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write "You are using Powershell 5"
}

次の記事では、WindowsでPowerShellのバージョンをアップデートする方法について解説します。

  1. Windows 10 で PowerShell のバージョンを確認する4つの方法【初心者向け完全ガイド】

    多くのユーザーは、コマンドプロンプトよりも強力な機能を持つ PowerShell を好んで使っています。Windows Server の操作に加えて、Exchange、Lync、SQL ベースのサーバーも制御できる点が大きな魅力です。 Windows 10 には標準で PowerShell 5.0 が搭載されていますが、最新の Windows Update コンポーネントを適用すると、より新しいバージョンの Windows PowerShell 5.1 が自動的にインストールされます。そのため、自分の PC にどのバージョンの PowerShell が入っているのかを確認する方法を知っておくと

  2. Windows 11でPowerShellのバージョンを素早く確認する方法

    PowerShellは、Windows 10やWindows 11に標準搭載された強力で便利なツールです。しかし、「PowerShellをアップデートしたいけれど、今使っているバージョンがわからない」と困ったことはありませんか?この記事では、Windows 11にインストールされているPowerShellのバージョンを簡単に確認する方法を詳しく解説します。 なお、Windows Package Manager(通称 winget)は、コマンドプロンプトやPowerShellから利用できるコマンドラインツールで、アプリのインストール・管理・設定・アンインストールまで行えます。Windows 11