PowerShellは、Windowsのシステム管理からクラウドサービスの運用、自動化スクリプトの開発まで、現代のITインフラにおいて欠かせないツールとなっています。
しかし、PowerShellには大きく分けて「Windows PowerShell」と「PowerShell(旧称:PowerShell Core)」の2つの系統があり、バージョンによって利用できるコマンドレットや文法が大きく異なります。
意図した通りにスクリプトを動作させるためには、現在実行されているPowerShellのバージョンを正しく把握することが第一歩です。
本記事では、2026年現在の最新環境に基づき、PowerShellのバージョンを確認する標準的なコマンドから、出力結果の詳細な見方、さらにはリモート環境での確認方法まで詳しく解説します。
なぜPowerShellのバージョン確認が必要なのか
PowerShellのバージョン確認は、単なる情報の把握以上の意味を持ちます。
特に以下の3つの観点において、バージョン情報の特定は非常に重要です。
まず1つ目は、互換性の確保です。
Windows PowerShell 5.1とPowerShell 7.x系では、基盤となる.NETのランタイム(.NET Frameworkか.NET 9/10か)が異なります。
これにより、特定のモジュールが動作しない、あるいは挙動が微妙に異なるケースが発生します。
2つ目は、セキュリティとサポートです。
古いバージョンには脆弱性が存在する可能性があり、最新のセキュリティパッチが適用されているかを確認する必要があります。
2026年現在、古いバージョンのPowerShellはサポートが終了しているケースも多いため、常に適切なバージョンを選択することが推奨されます。
3つ目は、新機能の利用です。
新しいバージョンでは、並列処理の最適化や新しい演算子の導入など、開発効率を劇的に向上させる機能が追加されています。
自分の環境でそれらが使えるかどうかを知るためには、バージョン確認が欠かせません。
最も確実な確認方法:$PSVersionTable
PowerShellにおいて、最も正確かつ詳細なバージョン情報を取得できるのが、自動変数である$PSVersionTableを参照する方法です。
この変数は読み取り専用で、現在のセッションに関するエンジン情報が格納されています。
$PSVersionTableの実行例
コンソールで以下のコマンドを入力して実行します。
# $PSVersionTable変数を表示して、エンジンの詳細情報を確認する
$PSVersionTable
実行結果は、環境によって異なりますが、概ね以下のように表示されます(PowerShell 7.x系の例)。
Name Value
---- -----
PSVersion 7.6.0
PSEdition Core
GitCommitId 7.6.0-preview.1
OS Microsoft Windows 11.0.22631
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
出力項目の詳細解説
出力された各項目の意味を正しく理解することで、環境の状態をより深く把握できます。
| 項目名 | 内容の解説 |
|---|---|
| PSVersion | PowerShell本体のバージョンです。ここが最も重要な数値となります。 |
| PSEdition | 「Desktop(Windows PowerShell)」か「Core(PowerShell 6以降)」かを示します。 |
| OS | 動作しているオペレーティングシステムの詳細なバージョンです。 |
| PSCompatibleVersions | 現在のバージョンが後方互換性を持っている以前のバージョンの一覧です。 |
| SerializationVersion | データのシリアル化に使用されるバージョンです。 |
特にPSVersionのメジャー番号に注目してください。
5以下であればWindows PowerShellであり、6以上であればクロスプラットフォーム対応のPowerShellであることを示しています。
簡易的な確認方法:Get-Hostコマンドレット
よりシンプルに情報を取得したい場合、Get-Hostコマンドレットや自動変数である$Hostを使用する方法もあります。
Get-Hostの実行例
# ホストアプリケーションの情報を取得する
Get-Host
Name : ConsoleHost
Version : 7.6.0
InstanceId : 5f4e321a-abcd-1234-efgh-i9j8k7l6m5n4
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : ja-JP
CurrentUICulture : ja-JP
ここで注意が必要なのは、Get-Hostが返す「Version」は、PowerShellエンジンそのもののバージョンではなく、ホストアプリケーション(コンソール)のバージョンであるという点です。
多くの環境ではエンジンとホストのバージョンは一致しますが、Visual Studio Codeの統合ターミナルやサードパーティ製のツールを使用している場合、必ずしもエンジンバージョンと一致しないことがあります。
そのため、スクリプトの互換性を調査する目的であれば、前述の$PSVersionTableを使用するのがベストプラクティスです。
リモートコンピュータのバージョンを確認する方法
管理下のサーバーや別のPCなど、遠隔地にある端末のPowerShellバージョンを確認したい場面も多いでしょう。
その場合は、Invoke-Commandを利用してリモートでスクリプトブロックを実行します。
Invoke-Commandによる確認
あらかじめWinRM(Windows Remote Management)が有効になっている必要があります。
# リモートコンピュータ「RemotePC01」のバージョンを確認する
Invoke-Command -ComputerName "RemotePC01" -ScriptBlock { $PSVersionTable.PSVersion }
このコマンドを実行すると、リモート環境のPSVersionプロパティのみが抽出され、どのコンピュータからの応答であるかを示す「PSComputerName」プロパティと共に結果が返ってきます。
複数のサーバーを一括で管理している際、一律で最新バージョンにアップデートされているかを点検するのに役立ちます。
PowerShellの種類とバージョンの歴史的背景
確認したバージョンをどう解釈すべきか、その背景を整理しておきましょう。
2026年時点では、以下の2系統が混在しています。
Windows PowerShell (1.0 ~ 5.1)
Windows OSに標準でプリインストールされているバージョンです。
.NET Framework上で動作します。
- 5.1:Windows PowerShellとしての最終バージョンです。バグ修正などの限定的なサポートは継続されていますが、新機能の追加はありません。
- 特徴:Windows固有の管理機能(WMIやCOMオブジェクト)との親和性が非常に高いのが特徴です。
PowerShell (6.0 ~ 7.x以上)
オープンソース化され、Windows以外(LinuxやmacOS)でも動作するように開発されたモダンなバージョンです。
.NET Core(現 .NET)上で動作します。
- 7.x:現在の主流です。5.1との高い互換性を維持しつつ、大幅な高速化が図られています。
- 特徴:パフォーマンスが劇的に向上しており、並列処理を行う
ForEach-Object -Parallelなどが利用可能です。
もし環境を確認した結果、バージョンが「5.1」であった場合は、必要に応じて最新の「7.x」系をインストールすることを検討してください。
モジュールのバージョンを確認する方法
PowerShell本体だけでなく、インストールされているモジュール(Azure PowerShell、Active Directoryモジュールなど)のバージョンを確認することも重要です。
# インストールされている特定のモジュール(例:Microsoft.Graph)のバージョンを確認する
Get-Module -ListAvailable Microsoft.Graph
特定のモジュールが古いためにコマンドが動作しないというトラブルは頻発します。
本体のバージョン確認と併せて、Get-Moduleの使い方を覚えておくと、トラブルシューティングの効率が上がります。
まとめ
PowerShellのバージョン確認は、効率的で安全な自動化環境を維持するための基本作業です。
最も推奨される方法は、詳細な情報が得られる$PSVersionTable変数の確認です。
本記事で解説した内容をまとめると以下の通りです。
- ローカル環境の確認:
$PSVersionTableを最優先で使用する。 - 出力項目の意味:
PSVersionでメジャーバージョンを、PSEditionで系統(CoreかDesktopか)を判断する。 - リモート環境の確認:
Invoke-Commandを活用して遠隔地の情報を収集する。 - 注意点:
Get-Hostはあくまでホストアプリのバージョンであり、エンジンと異なる場合がある。
2026年のシステム運用においては、古いWindows PowerShell 5.1から最新のPowerShell 7.xへの移行が進んでいます。
自身の環境がどの立ち位置にあるのかを正確に把握し、最適なスクリプティング環境を構築してください。
