Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

PowerShell のバージョンを確認・更新・選択する

PowerShell のバージョンを確認・更新・選択する

Aug 25, 2025

PowerShell は Windows 専用(5.1)から、.NET に基づいて Windows、macOS、Linux で動作するクロスプラットフォームの PowerShell 7 へと進化しました。自分のバージョンを把握することは、互換性・セキュリティ・並列処理のような最新機能へのアクセスにとって重要です。バージョンは次で確認できます。 $PSVersionTable.PSVersion またはレジストリのクエリで確認します。Windows PowerShell 5.1 はあらかじめインストールされていますが、PowerShell 7 は Microsoft Store、Winget、または MSI から手動でインストールする必要があります。両方を並べて実行することで、レガシーと最新のワークフローを維持しやすくなります。

自分のマシンにインストールされている PowerShell のバージョンを知りたい場合があります。初心者の方はコントロール パネルの「プログラム」から PowerShell のバージョンを確認しようとすることもありますが、そこで PowerShell がプログラムとして一覧に表示されていないと、がっかりしてしまうことがよくあります。その代わりに、PowerShell のバージョンを見つけるための別の方法を使う必要があります。

この記事では、実行中の PowerShell バージョンを確認する方法を包括的に解説します。

初心者向け Windows PowerShell スクリプト入門チュートリアル(PDF)

もっと詳しく

PowerShell バージョンの概要

PowerShell は Windows の管理ツールから進化し、さまざまなプラットフォームで利用できる汎用的なシェルになりました。とりわけ、PowerShell Core 6.x と PowerShell 7.x により、強力なクロスプラットフォームの自動化およびスクリプト作成フレームワークとして確立されました。

PowerShell バージョンの進化(1.0 から 7.x まで)

2006年、Microsoftは、Windows OS向けの .NET フレームワークの一部として PowerShell 1.0 をリリースしました。対象には Windows XP(SP2)、Windows Server 2003(r2 SP1)、Windows Vista が含まれます。Get-Process や Get-Service のような cmdlets が導入され、Windows 環境での作業を自動化することを目的として設計されました。

Version

Description

PowerShell 2.0

PowerShell 2.0 came in 2009. Amongst other things, it introduced remoting (via WinRM) to run commands on remote machines and the Integrated Scripting Environment (ISE) application.

PowerShell 3.0

PowerShell 3.0, released in 2012, introduced workflows, new cmdlets and scheduled jobs for task automation.

PowerShell 4.0

PowerShell 4.0 (2013), 5.0 (2016), and 5.1 (2016) had improvements in cmdlets, performance, and DSC. Classes and Enums were added to the scripting language. With PowerShell 5.1, there was a shift towards open-source and PowerShell Core.

PowerShell Core 6.x

Then PowerShell Core 6.x (2018) was open-sourced and moved to GitHub. It was cross-platform, running on Windows, macOS, and Linux. Not only that, but it was also built for heterogeneous environments and the hybrid cloud.

PowerShell 7.x

PowerShell 7.x (2020) is the most recent version. It unifies Windows PowerShell and PowerShell Core into a single version stream, supports pipeline parallelization, and improves error handling amongst other things.

正しい PowerShell のバージョンを特定する理由

日々の作業で PowerShell を使う前に、まず気になるのが「自分の PowerShell は何のバージョンか」という点です。この質問への答えを持つことが重要なのは、PowerShell のバージョンによって利用できる cmdlets や関数が決まるからです。このことやその他多くの理由により、作業を管理するために必要な PowerShell のバージョンを特定しなければなりません。

  • 互換性。いくつかのスクリプトやモジュールでは、最新の PowerShell バージョンでのみ利用できる特定の cmdlets または機能が必要な場合があります。最新の PowerShell バージョンは古いスクリプトをサポートしますが、古くなった機能については非推奨(deprecation warnings)の警告が表示されます。
  • 結果の正確性。 一部の PowerShell バージョンでは、コマンドの実行やモジュールの読み込みのために特定の要件、または前提条件を満たす必要がある場合など、期待している正確な結果が得られないことがあります。
  • クロスプラットフォーム対応。 Linux または macOS の場合は、PowerShell Core または PowerShell 7.x が必要です。
  • 高度な機能。 古いバージョンでは、PowerShell 7.x で利用できるパイプラインの並列処理、??(null 合体演算子)、および ForEach-Object -Parallel などの最新機能はサポートされません。
  • クラウドおよび DevOps の統合。 最新の PowerShell バージョンでは、Azure、AWS) などのクラウドプラットフォーム、DevOps ツール、CI/CD パイプラインとの統合機能が強化されており、クラウドベースの管理を容易にします。
  • セキュリティ要件。 セキュリティとコンプライアンスの理由から、最新の PowerShell バージョンが推奨されます。
  • 環境設定。 環境全体でツールや自動化を利用するには、バージョンを把握しておくことで、システム間の互換性を確実にするのに役立ちます。

Windows PowerShell と PowerShell Core の違い

Windows PowerShell と PowerShell Core の主な違いは次のとおりです:

Feature

Windows PowerShell

PowerShell Core

Platform

Windows-only

Cross-platform (Windows, macOS, Linux)

Version

Last major version: 5.1

Ongoing releases (7.x and beyond)

Framework

Based on .NET Framework

Based on .NET Core (now .NET)

Release Model

Only bug/security fixes

Active development with new features

Installation

Is pre-installed with Windows OS

Has to be downloaded separately from GitHub or package managers

Backward Compatibility

Tight integration with Windows (e.g., WMI, COM)

May have limited Windows-specific features

Performance

Faster in some Windows-native scenarios

Better performance on multiple platforms

Module Compatibility

Supports many legacy modules

Some older modules may not be compatible

Cloud/Container Support

Limited support for containers and cloud environments

Better support for containers and cloud

Open Source

Proprietary

Open-source (MIT license)

レガシーな Windows 固有の機能やモジュールを使う場合は、Windows PowerShell の方が適しています。一方、クロスプラットフォーム開発やクラウドベースのワークフローでは、PowerShell Core が最適です。

PowerShell のバージョンを確認する方法

インストールされている PowerShell のバージョンを把握することは、いくつかの実用的な理由から重要です。というのも、使用しているバージョンによって、利用可能な cmdlet や関数が決まるためです。さらに、バージョンによっては、さまざまなスクリプト、モジュール、プラットフォームに対するサポートが異なる場合があります。PowerShell をスムーズに運用するには、使用している PowerShell のバージョン、その制限、および主要な機能を理解しておく必要があります。

PowerShell のバージョン確認は簡単です。最も手軽に確認する方法は、PowerShell 自体を使うことです。たとえば、PSVersionTable.PSVersion または Get-Host cmdlet を通じて、使用中の PowerShell バージョンを表示できます。

PowerShell バージョン コマンド: $PSVersionTable.PSVersion

PowerShell エンジンのバージョンに関する情報が特に返されるため、これは PowerShell のバージョンを確認する最も信頼できる方法です。

      $PSVersionTable.PSVersion
      
Image

この cmdlet は、インストールされている PowerShell のメジャー、マイナー、およびビルド(パッチ)バージョンを表示します。該当する場合は改訂番号(revision number)も表示されます。

バージョンだけでなく、より詳細を確認したい場合は、次の cmdlet を試してください:

      $PSVersionTable
      
a screenshot of a windows powershell window .

$PSVersionTable は、バージョンに加えていくつかの環境固有のプロパティを表示します。

  • PSVersion – PowerShell のバージョンを表示します
  • PSEdition – Desktop(Windows PowerShell)か Core(PowerShell Core / PowerShell 7+)かを表示します
  • WSManStackVersion – リモート(remoting)に使用される WS-Management のバージョンを表示します
  • PSRemotingProtocolVersion – リモーティング プロトコルのバージョン
  • SerializationVersion – リモート セッションで古いバージョンとの互換性を維持するために使用されます

Get-Host コマンドで PowerShell のバージョンを取得する方法

ホストとは、PowerShell エンジンをホストするプログラムです。また、PowerShell とは独立したバージョンを持つホストを用意することもできます。

次の cmdlet は実行中の PowerShell のバージョンを出力しますが、このバージョンはエンジンのバージョンではなくホストのバージョンを反映するため、正確ではない場合があります。

      Get-Host
      
Image

多くの場合、PowerShell のバージョンはホストのバージョンと一致します。ホストのバージョンに加えて、この cmdlet はホスト名、現在のカルチャ(current culture)、UI カルチャ(UI culture)も表示します。

Get-Host コマンドはリモートでは動作せず、常にバージョン 1.0.0.0 を返します。

$Host および $Host.Version コマンド

$host は自動変数であり、Get-Host cmdlet と同じ情報を表示します。

      $host
      
Image

PowerShell のバージョンを探している場合、Get-Host と同じ理由により、$host の使用は推奨されません。$host.Version についても同様です。

      $host.Version
      
Image

現在の PowerShell セッションを実行しているホスト アプリケーションのバージョンを、ただし別の形式で表示します。

レジストリ エディター

次のいずれかの方法で、レジストリ エディターから PowerShell のバージョンを確認できます。

  • Get-ItemProperty cmdlet を使用してレジストリを照会し、インストールされている PowerShell のバージョンを確認します。
  • レジストリ エディターを開き、PowerShell のバージョン詳細情報のパスを手動で見つけます。

Cmdlets 経由

PowerShell バージョン 5 の場合

‘Get-ItemProperty’ cmdlet を使って、PowerShellVersion レジストリ キーを表示できます。内容は次のとおりです:

      (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion
      
Image
PowerShell バージョン 7 の場合

PowerShell 7 以降がインストールされている場合は、次の cmdlet を使用してください:

      Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\PowerShellCore' | Select-Object -Property PSVersion
      

手動の方法

レジストリエディターで PowerShell の構成情報とバージョン情報を確認できます。

PowerShell バージョン 5 の場合

レジストリエディターで、Computer > HKEY-LOCAL-MACHINE > SOFTWARE > Microsoft > PowerShell >3 > PowerShellEngine を展開します。隣のペインには、PowerShell のバージョン番号を含む情報が表示されます。

Image
PowerShell バージョン 7 の場合

PowerShell 7 がインストールされている場合は、レジストリ エディターで次のパスに移動してバージョンを確認してください:

コンピューター > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > PowerShellCore > InstalledVersions > 31ab5147-9a97-4452-8443-d9709f0516e1

バージョン特定のための高度なテクニック

リモート システムで PowerShell のバージョンを確認する

前提条件

リモート コンピューターで PowerShell のバージョンを確認する前に、次の前提条件を満たす必要があります。

  • リモート コンピューターに Windows Management Framework (WMF) がインストールされ、有効化されている必要があります。
  • WinRM(Windows Remote Management)がローカル マシンとリモート マシンの両方で構成され、実行中である必要があります。
    「winrm quickconfig」を実行して、PowerShell 経由でリモートからアクセスできるようにマシンを準備します。
  • リモート コンピューターで必要な権限を持っている必要があります。

リモート マシン上の PowerShell のバージョンを確認する

Invoke-Command cmdlet に $PSVersionTable を使用して、リモート コンピューターにインストールされている PowerShell のバージョンを確認します。

      Invoke-Command `
  -ComputerName WS16-DC1 `
  -ScriptBlock { $PSVersionTable.PSVersion } `
  -Credential $cred
      

注:

  1. このコマンドでは、ComputerName(WS16-DC1)をご使用の特定のコンピューター名に置き換え、$cred の下にある資格情報を有効なユーザー名とパスワードに置き換えます。
  2. 値をカンマで区切ることで、複数のリモート コンピューターを一度に効率よく処理できます。

上記の cmdlet では:

  • Invoke-Command は、リモート コンピューター上でコマンドを実行するために使用します。
  • ComputerName WS16-DC1 は、リモート コンピューターの名前を指定します(この場合は WS16-DC1)。
  • ScriptBlock {$PSVersionTable.PSVersion} は、リモート コンピューター上で実行され、PowerShell のバージョン情報を取得するためのスクリプト ブロックです。
  • Credential $cred は、リモート コンピューターで認証するための資格情報を指定します。ここで $cred は、有効な資格情報(ユーザー名やパスワードなど)を含むオブジェクトです。

Windows オペレーティング システム間における PowerShell バージョンの比較

この表は、さまざまな Windows オペレーティング システムにあらかじめインストールされている PowerShell のバージョンを示しています:

PowerShell Version

Release Date

Windows OS Supported by Default

PowerShell 1.0

November 2006

Windows Server 2003 SP1
Windows XP SP2
Windows Vista

PowerShell 2.0

October 2009

Windows Server 2008 R2
Windows 7

PowerShell 3.0

September 2012

Windows Server 2012
Windows 8

PowerShell 4.0

October 2013

Windows Server 2012 R2
Windows 8.1

PowerShell 5.0

February 2016

Windows Server 2016
Windows 10

PowerShell 5.1

August 2016

Windows Server 2016
Windows 10 anniversary update

PowerShell Core 6.0

January 2018

Windows Server 2012 R2
Windows Server 2012
Windows Server 2016
Windows 10
Windows 8.1
Windows 7 with Service Pack 1

出典:https://superops.com/powershell-version

PowerShell 5.1 は、Windows クライアントおよびサーバーに既定でインストールされる最後のバージョンです。これに代わったのが PowerShell Core(現在は PowerShell 7)で、これは別製品です。PowerShell Core は事前にインストールされておらず、手動でインストールする必要があります。

より新しいバージョンをインストールしても、既定で事前にインストールされているバージョンは置き換えられません。たとえば、PowerShell 7.x と Windows PowerShell 5.1 は共存できます。

PowerShellの最新バージョンを更新またはインストールする

Windows 10 および 11 の Windows PowerShell 5.1 を常に最新の状態に保つには、PC を最新に維持できるよう、常にシステム更新を実行してください。

PowerShell Core(バージョン 7)はWindows PowerShellとは別製品なので、以下のいずれかの方法で手動インストールする必要があります:

  • インストーラーのファイルをダウンロードして実行する
  • コンピューターで PowerShell からコマンドを実行する

推奨として、PowerShell を最大限に活用するために、コンピューターに Windows PowerShell と PowerShell Core の両方を保持しておいてください。古いスクリプトは新しいバージョンでは動作しない可能性があり、現在のスクリプトは古いバージョンでは動作しない可能性がある点に注意してください。

以下のいずれかの方法で、より新しい PowerShell バージョンをダウンロードしてインストールできます。

Microsoft Store を使って PowerShell をインストールする

Windows 10 および Windows 11 では、Microsoft Store を開いて PowerShell を検索します。

PowerShell アプリの最新バージョンは、検索結果で PowerShell(Microsoft Corporation によって公開)として表示されます。クリックすると詳細を確認でき、ここで Getをクリックしてダウンロードし、インストールできます。

Image

Winget を使用して PowerShell をインストールする

WinGet パッケージ マネージャーは、コマンドラインから最新の PowerShell バージョンをインストールします。

Winget を使用して PowerShell を検索します Winget

PowerShell に関連するパッケージの一覧(バージョン番号と ID)を表示するには、次の cmdlet を使用します:

      winget search PowerShell
      
Image
PowerShell をインストール

必要な PowerShell パッケージを特定し、その ID を使ってインストールします。PowerShell の ID は Microsoft.PowerShell です。

最新の PowerShell バージョンをインストールするには、次の cmdlet を使用します:

      winget install Microsoft.PowerShell
      
Image

MSI パッケージを使用して PowerShell をインストール

別の方法として、GitHub から PowerShell をダウンロードし、インストールには MSI を使用する方法があります。公式 PowerShell GitHub release page を開いて、最新の PowerShell リリース(例:PowerShell 7.x)を確認します。このリリースの Assets セクションまで下にスクロールし、MSI パッケージをダウンロードしてください。

パッケージのダウンロードにはしばらく時間がかかります。ダウンロード後、インストーラーを実行して PowerShell をインストールしてください。

複数の PowerShell バージョンを管理する

同じマシン上で、従来の Windows PowerShell(通常バージョン 5.1)と最新の PowerShell Core(バージョン 6.x および 7.x)を競合なく使用できます。

複数の PowerShell バージョンを管理するよくあるケースは、異なる環境やスクリプトで特定のバージョンが必要になる場合です。

システムで複数の PowerShell バージョンを管理する方法は次のとおりです。

[実行]ダイアログ ボックスまたはコマンド ラインから特定のバージョンを実行する

[実行]ダイアログ ボックスを開き、起動する PowerShell バージョンの exe ファイルへのパスを指定します(以下の例を参照してください)。

次の例のように PowerShell でそのパスを指定することで、特定の PowerShell バージョンを実行することもできます。なお、この方法が有効なのは PowerShell 7 のみです。PowerShell 7 ではバージョン間の切り替えが可能です。

例:

  • PowerShell 5.1
      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
      
  • PowerShell 7
      C:\Program Files\PowerShell\7\pwsh.exe
      

PowerShell のプロファイルと設定

PowerShell プロファイルは、-NoProfile フラグを使用する場合を除き、PowerShell を起動するたびに実行される PowerShell スクリプトです。

各 PowerShell バージョンにはそれぞれ独自のプロファイル ファイルがあります。あるバージョンでのみ特定の設定や構成を有効にし、別のバージョンでは有効にしないようにしたい場合は、バージョンごとにプロファイルを個別に構成することができます。

プロファイル ファイルを手動で見つける

  • PowerShell 5.1 のプロファイルは、次の場所にある可能性があります: C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  • PowerShell 7+ のプロファイルは、次の場所にある可能性があります: C:\Users\<username>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

PowerShell でプロファイル ファイルを特定する

PowerShell 自体を使って PowerShell のプロファイルを取得することもできます。$Profile 変数にはパスが保存されているため、単に $Profile を使用してプロファイルのパスを特定してください。

      $Profile
      
Image

これにより、現在のユーザーの PowerShell ホスト アプリケーション プロファイルへのパスが表示されます。追加のパスを取得するには、$Profile 変数を Get-Member コマンドレットにパイプします。

      $Profile | Get-Member -MemberType NoteProperty
      
Image

古いスクリプトやモジュールとの互換性をテストする

新しいバージョンにアップグレードする場合、またはレガシーコードを統合する場合は、PowerShell で古いスクリプトやモジュールとの互換性をテストすることが重要です。

以下は、古いスクリプトやモジュールとの互換性をテストする方法の例です。

Windows PowerShell と PowerShell Core を並べて使用する

同じマシンで Windows PowerShell と PowerShell Core の両方を実行できます。互換性のために、スクリプトまたはモジュールを両方の環境でテストしてください。5.1 は Windows PowerShell の最後のメジャーリリースであり、バージョン 7 が PowerShell Core の現在のリリースである点を覚えておいてください。

例は次のとおりです。

      ./your_script.ps1
      

./ は、スクリプトが現在のディレクトリにあることを示し、your_script.ps1 は実行しようとしているスクリプトです。.ps1 は PowerShell スクリプトファイルのデフォルト拡張子です。

PowerShell のバージョンを確認する

スクリプトが最初に想定して作成された PowerShell のバージョンと、実行しようとしている PowerShell のバージョンを把握しておくとよいでしょう。

Test-ModuleManifest Cmdlet を使用する

Test-ModuleManifest cmdlet は、PowerShell モジュール マニフェスト(.psd1 ファイル)が有効で正しく構成されていることを確認するために使用します。また、そのファイルの依存関係や互換性の問題もチェックします。

      Test-ModuleManifest -Path "C:\Path\To\YourModule.psd1"
      

-Path パラメーターは .psd1 ファイルへのパスを指定します。

Get-Command Cmdlet を使って cmdlet の利用可否を確認する

一部の cmdlet やパラメーターは、ある PowerShell バージョンではサポートされていても、別のバージョンではサポートされない場合があります。使用している cmdlet の利用可否と構文を確認するには、Get-Command cmdlet を使います。例は次のとおりです:

      Get-Command -Name Invoke-RestMethod -Module Microsoft.PowerShell.Utility
      

静的コード解析のための PSScriptAnalyzer

PSScriptAnalyzer は、ベスト プラクティスを確認し、互換性の問題を特定するためのツールです。以下の cmdlet を使用してインストールし、実行してください:

      Install-Module -Name PSScriptAnalyzer
Invoke-ScriptAnalyzer -Path "C:\Path\To\YourScript.ps1"
      

実行前に、スクリプトの問題や非推奨の cmdlet を見つけるのに役立つ方法です。

.NET の互換性を確認する

Windows PowerShell(5.1)は .NET Framework 上に構築されていますが、PowerShell Core(6+)および PowerShell 7+ は .NET Core/.NET 上に構築されています。スクリプトやモジュールが .NET アセンブリに依存している場合は、それらが .NET Core/.NET と .NET Framework の両方と互換性があることを確認してください。

次の cmdlet を使用して、スクリプトで使用している .NET アセンブリをテストできます。

      [System.Reflection.Assembly]::LoadFile("C:\Path\To\YourAssembly.dll")
      

結論

お使いのコンピューターにインストールされている PowerShell のバージョンを把握することは、いくつかの理由から重要です。バージョンによって新しい cmdlet、機能、構文が追加されるため、バージョンを知ることで、スクリプトが実行環境のバージョンと互換性があることを確認できます。PowerShell Core ではクロスプラットフォーム対応が導入されたため、インストール済みのバージョンを把握することは、適切なプラットフォーム固有の機能やモジュールを使ううえで重要です。

お使いのコンピューターで動作している PowerShell のバージョンを判断するための方法の中で、$PSVersionTable の使用を強く推奨します。これは信頼性が最も高いだけでなく、バージョン特定においても最も正確な方法です。PowerShell 環境の包括的な概要を提供し、スクリプトが特定のバージョンおよび環境と互換性があることを確認するのに役立ちます。

以前のバージョンで見つかった脆弱性から保護する重要なセキュリティパッチがインストールされるよう、PowerShell は定期的に更新する必要があります。さらに、定期的な更新により、新しい cmdlet やクロスプラットフォームの強化など、最新の機能にアクセスできることが保証されます。また、パフォーマンスの向上、堅牢な実行ポリシー、並列および非同期実行へのサポート強化も実現します。要するに、最新の PowerShell バージョンへアップグレードすることで、古い、またはサポートされていないバージョンに伴うリスクを低減しつつ、より安全で効率的かつスケーラブルな自動化ソリューションを作成できます。

Netwrix Directory Manager

よくある質問

PowerShell のバージョンを確認する方法は?

PowerShell のバージョンを確認する最も簡単な方法は、PowerShell 自体を使うことです。たとえば PSVersionTable.PSVersion や Get-Host コマンドレットを通じて、使用中の PowerShell バージョンを表示できます。

共有する

もっと詳しく

著者について

Tyler Reese

プロダクト マネジメント担当副社長、CISSP

ソフトウェア セキュリティ業界で20年以上の経験を持つ Tyler Reese は、今日の企業が直面している急速に変化するアイデンティティおよびセキュリティ上の課題について深く理解しています。現在、彼は Netwrix Identity and Access Management ポートフォリオのプロダクト ディレクターを務めており、市場動向の評価、IAM 製品ラインの方向性の設定、そして最終的にはエンド ユーザーのニーズに応えることが主な責任です。彼の専門的な経験は、Fortune 500 企業向けの IAM コンサルティングから、大手のダイレクト・トゥ・コンシューマー企業のエンタープライズ アーキテクトとしての業務まで多岐にわたります。現在、彼は CISSP の認定資格を保有しています。