PowerShellのバージョンを確認する方法|Windows PowerShellとPowerShell Coreの違いも解説
本記事では、PowerShellにはどのようなバージョンが存在するのか、Windows PowerShellとPowerShell 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の違いとは?
- Windows PowerShellは.NET Frameworkベースです(例:PowerShell 5には.NET Framework v4.5が必要なため、インストールされているか確認してください)。一方、PowerShell Coreは.NET Coreベースです。
- Windows PowerShellはWindows OSでのみ動作しますが、PowerShell Coreはクロスプラットフォーム対応のため、Linux上でも動作します。
- PowerShell CoreはWindows PowerShellと完全な互換性があるわけではありませんが、Microsoftは以前のPSコマンドレットやスクリプトとの後方互換性の向上に取り組んでいます(PowerShell Coreへの移行前に、既存のPS1スクリプトをテストすることを推奨します)。PowerShell Core 7はWindows PowerShellとの互換性が最も高いバージョンです。
- PowerShell ISEエディターはPowerShell Coreスクリプトの編集には使用できません(代わりにVisual Studio Codeを利用してください)。
- Windows PowerShellは今後新機能が開発されないため、PowerShell Coreへの移行を検討することを推奨します。
コンソールでPowerShellのバージョンを確認する方法
コンピューターにインストールされているPowerShellのバージョンを確認する最も簡単な方法は、次のコマンドを実行することです。
host
表示結果のVersionプロパティの値を確認してください。以下のスクリーンショットは、Windows Server 2016と同様にPowerShell 5.1がデフォルトでインストールされているWindows 10で実行した例です。

または、次のコマンドでも確認できます。
$PSVersionTable
PowerShellのバージョン値のみを取得したい場合は、次のようにします。
$PSVersionTable.PSVersion.major
(この例では、クリーンインストールしたWindows Server 2008 R2でPSVersion 2.0が表示されています)

$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

この方法は、Windows Server 2012/Windows 8以降の環境で動作します。
Windows Server 2008 R2/Windows 7の場合は、別のレジストリキーからパラメーターの値を取得してください。
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

インストールされている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のバージョンをアップデートする方法について解説します。
-
Windows 10 で PowerShell のバージョンを確認する4つの方法【初心者向け完全ガイド】
多くのユーザーは、コマンドプロンプトよりも強力な機能を持つ PowerShell を好んで使っています。Windows Server の操作に加えて、Exchange、Lync、SQL ベースのサーバーも制御できる点が大きな魅力です。 Windows 10 には標準で PowerShell 5.0 が搭載されていますが、最新の Windows Update コンポーネントを適用すると、より新しいバージョンの Windows PowerShell 5.1 が自動的にインストールされます。そのため、自分の PC にどのバージョンの PowerShell が入っているのかを確認する方法を知っておくと
-
Windows 11でPowerShellのバージョンを素早く確認する方法
PowerShellは、Windows 10やWindows 11に標準搭載された強力で便利なツールです。しかし、「PowerShellをアップデートしたいけれど、今使っているバージョンがわからない」と困ったことはありませんか?この記事では、Windows 11にインストールされているPowerShellのバージョンを簡単に確認する方法を詳しく解説します。 なお、Windows Package Manager(通称 winget)は、コマンドプロンプトやPowerShellから利用できるコマンドラインツールで、アプリのインストール・管理・設定・アンインストールまで行えます。Windows 11