検索
連載

IT管理者を泣かせるWindowsの製品名変更やバージョン形式変更まとめその知識、ホントに正しい? Windowsにまつわる都市伝説(232)

IT管理者は、スクリプトを使って管理対象のコンピュータから各種情報を収集することがあります。Windows 10 バージョン20H2以降の「YYH1/YYH2」形式への変更、Windows 11の登場はそうしたスクリプトの修正を余儀なくさせます。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

レジストリから取得できるOSバージョン情報

 OSの製品名やバージョン情報は、旧来レジストリの「HKEY_LOCAL_MACHINE(HKLM)\SOFTWARE\Microsoft\Windows NT\CurrentVersion」キーに格納されており、スクリプトを使用してこのキーの場所から「レジストリ値」を取得して利用できます。

 しかし、本連載第210回で指摘したように、Windowsの製品名を格納していた「ProductName」値は「Windows 11」で更新されず、「Windows 10 Pro」などのデータをいまだに格納しています(画面1)。

画面1
画面1 Windowsの製品名を格納しているはずの「ProductName」値は、Windows 11では「Windows 10」のまま

 「ReleaseId」値にはWindows 10 バージョン2004まで「2004」などのバージョンをデータとして格納していましたが、次のバージョンで採用された「YYH1」「YYH2」形式のバージョン情報はこの値には格納されず、新たに追加された「DisplayVersion」値に格納されることになりました。Windows 10 バージョン20H2以降、Windows 11と「Windows Server 2022」のReleaseId値は「2009」のまま放置されています。

 以下の表1は、「HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion」キーに存在する製品名やバージョン情報を格納しているレジストリ値をまとめたものです。Windows 10 バージョン2004とバージョン20H2、そしてWindows 11を境に変更されていることが分かるでしょう。

クライアントSKU Windows 8.1以前 Windows 10〜2004 Windows 10 20H2〜 Windows 11 備考
サーバSKU Windows Server 2012 R2以前 Windows Server 2016/2019 Windows Server 2022
ProductName 利用可 利用可 利用可 利用可 利用不可(Windows 10) 製品名(Windows 11以外)
ReleaseId 存在しない 利用可 利用不可(2009) 利用不可(2009) 利用不可(2009) YYMM形式のバージョン
DisplayVersion 存在しない 存在しない 利用可 利用可 利用可 YYH1/YYH2形式のバージョン
CurrentBuild 利用可 利用可 利用可 利用可 利用可 ビルド番号
UBR 利用可 利用可 利用可 利用可 利用可 更新ビルドリビジョン(ビルド番号の.以降)
表1 WindowsおよびWindows ServerのOSバージョン関連のレジストリ値

Windows 11の製品名はレジストリから取得できない

 表1には、Windows 11の製品名を格納しているレジストリ値がありません。実際、Windows 11にそのような目的のレジストリ値は存在しません。PowerShell(powershell.exeおよびpwsh.exe)の場合は、以下のいずれかの方法でWindowsの製品名を取得できます。「Get-ComputerInfo」は大量の情報を収集するのに時間がかかるため、2つ目のWMI(Windows Management Instrumentation)クエリを利用した方法の方が素早く情報を取得できます。

(Get-ComputerInfo).OsName

または

 (Get-CimInstance -Query 'Select * from Win32_OperatingSystem').Caption

 バージョン形式の変更やWindows 11の登場による影響は、Get-ComputerInfoといったシステム情報表示ユーティリティーにも及んでいます。スクリプトなどでGet-ComputerInfoのWindowsProductNameプロパティを利用している場合は、上記の「OsName」に置き換えてください。Windows 11の「WindowsProductName」プロパティは、「Windows 10」を表示します。なお、「OsName」プロパティは、Windowsの全てのバージョンで利用できます。

 Windows 11およびWindows Server 2022からは、YYH1/YYH2形式のバージョンを表示する「OSDisplayVersion」プロパティが新たに利用可能になりました。ただし、「OSDisplayVersion」プロパティを利用できるのは、Windows PowerShell 5.1のGet-ComputerInfoです。クロスプラットフォーム版PowerShell(pwsh.exe)のGet-ComputerInfoには「OSDisplayVersion」プロパティは実装されていません(画面2)。

画面2
画面2 Windows 11およびWindows Server 2022からはGet-ComputerInfoで「OSDisplayVersion」プロパティを利用できるようになったが、PowerShell 7では利用できないことに注意

便利なスクリプトをWindows 11対応に

 以下の連載記事では、Windows 10のエディションやバージョン情報、「Microsoft Edge」「Microsoft 365」アプリ(Officeアプリ)のバージョン情報をファイルに出力できるスクリプト「get-winver.ps1」を紹介しました。当時はWindows 10が永遠に続くと思っていたので、Windows 11でこのスクリプトをそのまま実行しても製品名として「Windows 10」を出力します。

 このスクリプトをWindows 11対応にするのは、ここまでの説明があれば簡単です。レジストリの「ProductName」値から取得していたものを、WMIクエリの方法に差し替えるだけです(画面3)。ついでに、Arm64版Windows 11を想定し、Arm64アーキテクチャの情報取得にも対応しました(※Arm64版Windows 11が手元にないので、スクリプト全体が正常に機能するかどうかは分かりません)。

$filename = ".\" + $env:Computername + ".txt"
#Get Windows Version and Build
$winArc = "unknown arc"
if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") {
  $winArc = "x64"
} elseif ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") {
  $winArc = "arm64"
} else {
  $winArc = "x86"
}
$winReg = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -ErrorAction SilentlyContinue)
#$winName = $winReg.Productname
$winName = (Get-CimInstance -Query 'Select * from Win32_OperatingSystem').Caption
〜以下省略〜
▲「get-winver.ps1」
画面3
画面3 Windows 10用に書いた情報収集スクリプトをWindows 11対応に

BgInfoがWindows 11に対応しました

 Windows Sysinternalsの「BgInfo」ツールは、デスクトップの壁紙にシステム情報を表示できるツールです。壁紙を変更する代わりに、ファイル(.txt、.xls、.mdb)やデータベース(SQL Server、MySQL、MyODBC)に出力するという利用も可能です。少し古い記事ですが、詳細については以下の記事を参照してください。

 BgInfoはバージョン4.30(2022年7月19日リリース)以降でWindows 11に対応しました(画面4)。大量のWindowsクライアントを管理しているIT管理者は、このツールを利用してさまざまな情報を効率的に収集する方法があるということを覚えておくとよいでしょう。

画面4
画面4 BgInfoの「」は、Windows 11に対応済み。コマンドラインで実行して、壁紙を変更せずに、これらの情報をファイルやデータベースに出力することもできる

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る