覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

Windows 10 - バージョン情報の確認・取得方法

Windows 10 を使っていて、一概に Windows 10 といっても定期的に大きなバージョンアップが行われていて、
そのバージョン次第でサポート切れみたいなこともあります。

今までの Windows に比べても今、このPC バージョンいくつ何だっけ? という確認をしなければならない場面が多い気がします。


視覚的に確認

複数確認できる場所(手順)がありますが、とにかく以下の手順が一番手っ取り早いです。

1) Windowsキー + R キーを押して、ファイル名を指定して実行のウィンドウを表示

2) winver と入力してOK

f:id:nini_y:20210423094633p:plain

3) Windows のバージョン情報が表示されます

f:id:nini_y:20210423094700p:plain

上記の赤枠の部分です。バージョンは、20H220H2 (OS Build 19042.928))ということになります。


PowerShell で 取得

ウィンドウ等で視覚的に確認でもよいんですが、文字情報(文字列)としてバージョンを取得したい場合もあるかもしれません。PowerShellを使いましょう。

20H2 よりも前か、 20H2 (以降) か でやり方がちょっと異なります。

Windows 10 20H2 よりも前

以下のいずれかのコマンドで取得できます。後者のコマンドだとちょっと時間がかかります。

$CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
"Version " + $CurrentVersion.ReleaseId + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"
$ComputerInfo = Get-ComputerInfo
"Version " + $ComputerInfo.WindowsVersion + " (OS Build " + $ComputerInfo.OsBuildNumber + "." + $ComputerInfo.WindowsUBR + ")"


実行例

PS C:\Users> $CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
PS C:\Users> "Version " + $CurrentVersion.ReleaseId + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"
Version 2004 (OS Build 19041.572)

Version 2004 (OS Build 19041.572) というバージョン情報が取得できています。


Windows 10 20H2

Windows 10 20H2 (以降) でも上記のコマンドでバージョン情報は取得できます。

Windows10 20H2 の PC で実行すると以下のようになります。

PS C:\Users> $CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
PS C:\Users> "Version " + $CurrentVersion.ReleaseId + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"
Version 2009 (OS Build 19042.928)

Version 2009 (OS Build 19042.928) というバージョン情報が取得できています。

2009 というのは内部的なバージョンで間違った値ではないんですが、
Windows 10 の バージョンの表記が分かりにくいとかいう色々なことがあったらしく、
内部的にはこれまでと同じルールの 2009 という値を持ってますが、 バージョンのラベルとして 20H2 という表記になったようです。


では、20H2 という値はどこから取ればいいのかというと、
レジストリの \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionDisplayVersion に保持されているので、そこから取得します。

f:id:nini_y:20210423101259p:plain


先のPowerShellのコマンド で $CurrentVersion.ReleaseId としていた部分を $CurrentVersion.DisplayVersion に変更すればよいことになります。

というわけで実行するコマンドとしては以下になります。

$CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
"Version " + $CurrentVersion.DisplayVersion + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"


ワンライナーにするなら以下(セミコロンで区切っているだけ)

$CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"; "Version " + $CurrentVersion.DisplayVersion + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"


実行例

PS C:\Users> $CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"; "Version " + $CurrentVersion.DisplayVersion + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"
Version 20H2 (OS Build 19042.928)


無事に Version 20H2 (OS Build 19042.928) という値を取得できました。


両方まとめると

Windows 10 20H2 よりも前と 20H2以降 の環境をまとめて扱うなら、
上記に書いてきた内容をひとまとめにして以下のようなコマンドで値を取得できます。

$CurrentVersion = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" 
if ($CurrentVersion.DisplayVersion -ne $null) { $DispVersion = $CurrentVersion.DisplayVersion } else { $DispVersion = $CurrentVersion.ReleaseId }
"Version " + $DispVersion + " (OS Build " + $CurrentVersion.CurrentBuild + "." + $CurrentVersion.UBR + ")"