PowerShell で Windows バージョンを取得する

Marion Paul Kenneth Mendoza 2023年12月11日
  1. PowerShell の [System.Environment] クラスを使用して Windows バージョンを取得する
  2. PowerShell の Get-ComputerInfo コマンドレットを使用して Windows バージョンを取得する
  3. PowerShell の Get-WMIObject コマンドレットで WMI クラスを使用して Windows バージョンを取得する
  4. systeminfo レガシーコマンドの使用
PowerShell で Windows バージョンを取得する

コンピュータに搭載されている Windows オペレーティングシステムを取得する最速の方法は、winver コマンドを使用することです。Windows PowerShell では、Windows バージョンのオペレーティングシステムを取得する方法が複数あります。これらについては、この記事で説明します。

PowerShell の [System.Environment] クラスを使用して Windows バージョンを取得する

.NET ライブラリにアクセスできる場合は、[System.Environment] クラスの OSVersion プロパティにアクセスできます。

サンプルコード:

[System.Environment]::OSVersion.Version

出力:

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      22000  0

現在実行している現在の Windows バージョンのオペレーティングシステムを相互参照するために、公式 Microsoft ドキュメントを参照する場合があります。

ただし、Windows11 や WindowsServer 2019 などの最新のオペレーティングシステムを使用している場合は、Windows 10 と WindowsServer 2016 を表すメジャービルド 10 が引き続き表示されるため、正しいバージョンは表示されません。したがって、上記のコマンドは以下の Windows 10 および WindowsServer 2016 を実行している場合にのみ、適切な値が表示されます。

PowerShell の Get-ComputerInfo コマンドレットを使用して Windows バージョンを取得する

Get-ComputerInfo を単独で使用すると、多くのプロパティが出力されます。これらのプロパティセットから WindowsProductNameWindows バージョン、および OSHardwareAbstractionLayer プロパティのみを呼び出して、Windows オペレーティングシステムのバージョンを取得できます。

サンプルコード:

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

出力:

WindowsProductName WindowsVersion OsHardwareAbstractionLayer
------------------ -------------- --------------------------
Windows 10 Pro    2009           10.0.22000.1

以前の [System.Environment] クラスと同様に、オペレーティングシステムが Windows 10 および WindowsServer 2016 バージョン以下を使用している場合、このコマンドレットは正しい値を表示します。

HKLM レジストリをチェックし、Get-ComputerInfo コマンドレットの Windows バージョンプロパティを表示する同様のコマンドがあります。

サンプルコード:

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId

出力:

2009

上記の Windows バージョンのプロパティは、オペレーティングシステムのビルド番号と呼ばれるものです。ビルド番号 2009 は、Windows 10 ビルドを表します。これは、このコマンドが Windows 10 および WindowsServer2016 以下のオペレーティングシステムにのみ適用されることを意味します。

PowerShell の Get-WMIObject コマンドレットで WMI クラスを使用して Windows バージョンを取得する

また、Windows Management Instrumentation(WMI)クラスを使用して、オペレーティングシステムの現在のバージョンを確認する場合もあります。

サンプルコード:

(Get-WmiObject -class Win32_OperatingSystem).Caption

出力:

Microsoft Windows 11 Home

[System.Environment] クラスや Get-ComputerInfo コマンドレットとは異なり、最新バージョンを使用している場合、WMI オブジェクトは Windows オペレーティングシステムのバージョンを正しく表示します。

systeminfo レガシーコマンドの使用

Windows PowerShell コマンドレットラッパーで systeminfo legacy コマンドを使用して、詳細なオペレーティングシステムバージョンを出力することもできます。

systeminfo /fo csv | ConvertFrom-Csv | select OS*, System*, Hotfix* | Format-List

出力:

OS Name             : Microsoft Windows 11 Home
OS Version          : 10.0.22000 N/A Build 22000
OS Manufacturer     : Microsoft Corporation
OS Configuration    : Standalone Workstation
OS Build Type       : Multiprocessor Free
System Boot Time    : 21/12/2021, 5:10:47 pm
System Manufacturer : ASUSTeK COMPUTER INC.
System Model        : ASUS TUF Gaming A15 FA506IC_FA506IC
System Type         : x64-based PC
System Directory    : C:\Windows\system32
System Locale       : en-us;English (United States)
Hotfix(s)           : 3 Hotfix(s) Installed.,[01]: KB5007040,[02]: KB5007215,[03]: KB5006755
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn