IT管理者を泣かせるWindowsの製品名変更やバージョン形式変更まとめ:その知識、ホントに正しい? Windowsにまつわる都市伝説(232)
IT管理者は、スクリプトを使って管理対象のコンピュータから各種情報を収集することがあります。Windows 10 バージョン20H2以降の「YYH1/YYH2」形式への変更、Windows 11の登場はそうしたスクリプトの修正を余儀なくさせます。
レジストリから取得できるOSバージョン情報
OSの製品名やバージョン情報は、旧来レジストリの「HKEY_LOCAL_MACHINE(HKLM)\SOFTWARE\Microsoft\Windows NT\CurrentVersion」キーに格納されており、スクリプトを使用してこのキーの場所から「レジストリ値」を取得して利用できます。
しかし、本連載第210回で指摘したように、Windowsの製品名を格納していた「ProductName」値は「Windows 11」で更新されず、「Windows 10 Pro」などのデータをいまだに格納しています(画面1)。
「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 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 10クライアントのエディションやバージョン情報を収集する便利な方法(連載:企業ユーザーに贈るWindows 10への乗り換え案内 第106回)
このスクリプトを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 〜以下省略〜
BgInfoがWindows 11に対応しました
Windows Sysinternalsの「BgInfo」ツールは、デスクトップの壁紙にシステム情報を表示できるツールです。壁紙を変更する代わりに、ファイル(.txt、.xls、.mdb)やデータベース(SQL Server、MySQL、MyODBC)に出力するという利用も可能です。少し古い記事ですが、詳細については以下の記事を参照してください。
- 背景に情報を表示するだけが能じゃない!「BgInfo」でインベントリ収集(連載:ITプロ必携の超便利システム管理ツール 第3回)
BgInfoはバージョン4.30(2022年7月19日リリース)以降でWindows 11に対応しました(画面4)。大量のWindowsクライアントを管理しているIT管理者は、このツールを利用してさまざまな情報を効率的に収集する方法があるということを覚えておくとよいでしょう。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。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.
関連記事
- Windows 11一般提供開始、企業での導入/展開時に注意すべきポイントは?
MicrosoftはWindowsデスクトップOSの最新バージョンである「Windows 11」を正式にリリースし、Windows 11対応ハードウェアを搭載したWindows 10デバイスに対して、無料アップグレードの段階的なロールアウトを開始しました。 - Windows 11登場! 11で変わること、思ったほど変わらないこと
新しいWindows OS「Windows 11」の正式出荷が2021年10月5日に開始された。Windows 10からの無償アップグレードが可能であるため、どのような新機能が実装されたのか気になる人も多いのではないだろうか。そこで、本稿ではWindows 11の新機能、削除された機能などを簡単にまとめてみた。 - 買って、試して分かったWindows 365(契約・セットアップ編)
Microsoftからクラウド上でWindows 10が動く「クラウドPC」の利用可能なサブスクリプションサービス「Windows 365」の提供が開始された。早速、サブスクリプションを契約し、クラウドPCの設定を行ってみた。契約からセットアップまでで見えてきた便利な点、不便な点などをまとめてみた。 - いよいよ完全終了へ。Internet Explorer(IE)サポート終了スケジュール
長らくWindows OSに標準装備されてきたInternet Explorer(IE)。その「寿命」は各種サポートの終了時期に左右される。Windows OSごとにIEのサポート終了時期を分かりやすく図示しつつ、見えてきた「終わり」について解説する。