PowerShell にインストールされているバージョンを確認する

2024-08-18

PowerShell には複数のバージョンが存在します。スクリプトやコマンドレットの動作はバージョンによって異なる場合があります。そのため、スクリプトを実行する環境の PowerShell バージョンを確認することは重要です。

方法

PowerShell でインストールされているバージョンを確認するには、次のコマンドを使用します:

$PSVersionTable

このコマンドを実行すると、PowerShell のバージョンに関する詳細な情報が表示されます。重要な情報としては、PSVersion プロパティにメジャーバージョンとマイナーバージョンが表示されます。

$PSVersionTable | Format-Table PSVersion, PSEdition

このコマンドは、バージョン番号と PowerShell のエディション (Core または Desktop) を表示します。

さらに詳しい情報

PowerShell のバージョンに関する詳細な情報は、次のプロパティでも確認できます:

  • PSVersion: PowerShell のメジャーバージョンとマイナーバージョン
  • PSEdition: PowerShell のエディション (Core または Desktop)
  • PSCompatibleVersions: PowerShell と互換性のあるバージョン
  • BuildVersion: PowerShell のビルド番号

注意点

  • PowerShell 7 以降は、Windows PowerShell とは異なるインストール場所を持ちます。
  • PowerShell Core は、複数のバージョンが同時にインストールされている場合もあります。

訳注

  • 「コマンドレット」は PowerShell のコマンドの基本単位です。
  • 「自動変数」は PowerShell で自動的に作成される変数で、$PSVersionTable はその一例です。



PowerShell バージョン確認のコード例

コード例 1: 基本的なバージョン情報取得

$PSVersionTable
  • 説明: このコマンドは、PowerShell のバージョンに関する詳細な情報を表示します。
  • 出力例:
Name                           Value
----                           -----
PSVersion                      7.3.1
PSEdition                      Core
PSCompatibleVersions           {7.3.1}
BuildVersion                   17763.1973
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion          1.1.0.1

コード例 2: 特定の情報抽出

Write-Host "PowerShell バージョン: $($PSVersionTable.PSVersion)"
Write-Host "PowerShell エディション: $($PSVersionTable.PSEdition)"
  • 説明: このコードは、バージョン番号とエディションのみを抽出して表示します。
PowerShell バージョン: 7.3.1
PowerShell エディション: Core

コード例 3: 条件分岐によるバージョンチェック

if ($PSVersionTable.PSVersion.Major -ge 7) {
    Write-Host "PowerShell 7 以上です"
} else {
    Write-Host "PowerShell 7 未満です"
}
  • 説明: このコードは、PowerShell のメジャーバージョンが 7 以上かどうかをチェックし、それに応じてメッセージを表示します。

コード例 4: カスタムオブジェクトの作成

$psInfo = [PSCustomObject]@{
    Version = $PSVersionTable.PSVersion
    Edition = $PSVersionTable.PSEdition
    Build = $PSVersionTable.BuildVersion
}

$psInfo
  • 説明: このコードは、バージョン情報を含むカスタムオブジェクトを作成し、その内容を表示します。

コード例 5: 出力のフォーマット指定

$PSVersionTable | Format-Table PSVersion, PSEdition, BuildVersion
  • 説明: このコードは、バージョン情報を出力するためのフォーマットを指定します。



代替方法

レジストリを利用した確認

  • 原理: PowerShell のインストール情報はレジストリに保存されています。
  • 方法:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShell キーの下にバージョン情報が存在します。
    • PSVersionBuildNumber などの値を取得できます。
  • 注意: レジストリ操作は慎重に行う必要があります。誤った操作はシステムに影響を与える可能性があります。

WMI (Windows Management Instrumentation) を利用した確認

  • 原理: WMI は Windows システムの管理情報を提供するインターフェースです。
  • 方法:
    • Win32_Product クラスを使用して、PowerShell の製品情報を取得できます。
    • Name プロパティが "Microsoft PowerShell" である製品のバージョン情報を取得します。
  • 注意: WMI 操作も慎重に行う必要があります。

PowerShellGet モジュールを利用した確認

  • 原理: PowerShellGet モジュールは PowerShell パッケージの管理に使用されます。
  • 方法:
    • Get-InstalledModule コマンドレットを使用して、インストールされている PowerShell モジュールの一覧を取得します。
    • "PowerShell" という名前のモジュールのバージョンを確認します。
  • 注意: PowerShellGet モジュールがインストールされている必要があります。

コード例 (レジストリ)

$psVersionKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShell"
$psVersion = (Get-ItemProperty $psVersionKey).PSVersion
Write-Host "PowerShell バージョン: $psVersion"

コード例 (WMI)

$psProduct = Get-WmiObject Win32_Product | Where-Object {$_.Name -eq "Microsoft PowerShell"}
Write-Host "PowerShell バージョン: $($psProduct.Version)"

コード例 (PowerShellGet)

$psModule = Get-InstalledModule PowerShell
Write-Host "PowerShell バージョン: $($psModule.Version)"

どの方法を選ぶか

  • 一般的に: $PSVersionTable が最も簡単で推奨されます。
  • レジストリや WMI: 特殊な状況や詳細な情報が必要な場合に使用できますが、複雑さとリスクがあります。
  • PowerShellGet: PowerShell のバージョン確認というよりは、インストールされている PowerShell モジュールの確認に適しています。

powershell version

powershell version