Windowsの運用管理を快適にする10の裏ワザ/表ワザ
[ テクニカルライター 山市 良 ]

テクニック.1 - 更新管理に役立つバージョン、ビルド情報の取得

2021年07月08日配信
2023年09月28日更新

yamaichi_tec001_top_1800x540

 

 Windows 10およびWindows Server 2016以降は、半期チャネル(Semi-Annual Channel、SAC)と長期サービスチャネル(LTSC、旧称LTSB)の2つのサービスチャネルで提供されています(Windows ServerのSACはバージョン1709から)。SACは年に2回、LTSCは数年に1回に新バージョン(Windows 10では機能更新プログラムと呼びます)がリリースされ、SACのサービス期間は現在、原則18か月、下半期リリースのEnterpriseおよびEducationエディションについては30か月、LTSCは10年(メインストリーム5年+延長サポート5年)となっており、サービス期間中、セキュリティ更新やバグ修正を含む品質更新プログラムが提供されます。

Windows 11 は、年に1回のリリースサイクルとなり、HomeおよびProエディションは24か月、EnterpriseおよびEducationエディションは36か月のサポートが提供されます。Windows 10についても、バージョン21H2以降、年に1回のリリースサイクルに緩和されます。

Windows 10、Windows 11 およびWindows Server 2016以降のバージョン番号は、OSビルド番号(10.0.は省略する場合があります)と1対1で対応します(表1)。

表1 Windows 10およびWindows Server 2016以降のバージョンとOSビルド、サービス期間

サービスチャネル バージョン OSビルド サービス期間
SAC なし(便宜上 1507) 10.0.10240.X 既に終了
LTSC(LTSB) 2015 10.0.10240.x Enterprise LTSB 10年
SAC 1511 10.0.10586.x 既に終了
SAC 1607 10.0.14393.x 既に終了
LTSC(LTSB) 2016(1607) 10.0.14393.x Enterprise LTSB 10年
Server 10年
SAC 1703 10.0.15063.x 既に終了
SAC 1709 10.0.16299.x 既に終了
SAC 1803 10.0.17134.x 既に終了*1
SAC 1809 10.0.17763.x 既に終了*1
LTSC 2019(1809) 10.0.17763.x Enterprise LTSC 10年
Server 10年
SAC 1903 10.0.18362.x 全エディション 18か月
SAC 1909 10.0.18363.x

Home/Pro/Server 18か月*1
Enterprise/Education 30か月

SAC 2004(VB_RELEASE) 10.0.19041.x 全エディション 18か月
SAC 20H2(VB_RELEASE) 10.0.19042.x

Home/Pro/Server 18か月
Enterprise/Education 30か月

Server SAC 廃止(2022/08/09 EoS)

SAC 21H1(VB_RELEASE) 10.0.19043.x 全エディション 18か月
10 SAC→GAC 21H2
(VB_RELEASE)
2022.10 GA
10.0.19044.x Home/Pro/Server 18か月
Enterprise/Education 30か月

10 LTSC

(Windows 10 Enterprise LTSC 2021)

2021(21H2)
(VB_RELEASE)
2022.10 GA
10.0.19044.x Enterprise LTSC 5年*2
Server 10年

11 GAC

21H2
(CO_RELEASE)
2022.10 GA
10.0.22000.x Home/Pro 24か月
Enterprise/Education 36か月

Server LTSC
(Windows Server 2022)

2022(21H2)
(FE_RELEASE)
2022.09 GA
10.0.20348.x Server 10年
11 GAC 22H2
(NI_RELEASE)
2022.秋
未定 Home/Pro 24か月
Enterprise/Education 36か月

*1 2021年5月11日ですべてのサービス期間が終了しました。
*2 Windows 10 Enterprise LTSC 2022はサービス期間が5年に短縮されることが発表されています(IoT Enterprise LTSC 2022は10年のまま)。

 

 WindowsおよびWindows Serverの毎月の品質更新プログラムは、前月までの更新内容を累積した累積更新プログラムとして提供されます。OSビルド番号の最も左に位置するリビジョン番号(表1の.xの部分)は、Windowsの累積更新プログラムによってインクルメントされます。つまり、リビジョン番号を参照すれば、OSの更新状態を判断できるということです。最新の累積更新プログラムがインストールされたWindows 10、Windows 11、Windows Server 2016以降、Azure Stack HCI のOSビルド番号は、以下の release informationのページで確認することができます。また、最新状態にするための累積更新プログラムのKB番号を確認することもできます。

Windows 10 release information
https://docs.microsoft.com/en-us/windows/release-health/release-information

Windows 11 release information
https://docs.microsoft.com/en-us/windows/release-health/windows11-release-information

Windows Server release information
https://docs.microsoft.com/en-us/windows/release-health/windows-server-release-info

Azure Stack HCI release information
https://docs.microsoft.com/en-us/azure-stack/hci/release-information

 

■ 製品名、バージョン情報、詳細なビルド番号の情報を取得するさまざまな方法

 GUIツールやコマンドラインを使用して、Windowsの製品名、バージョン情報、ビルド番号を取得するいくつかの方法を紹介します。

 

Windows標準のバージョン情報

 Windows 10およびWindows Server 2016以降のデスクトップエクスペリエンス(LTSCのみ)では、[設定]アプリの[システム]の[詳細情報](バージョン1909以前は[バージョン情報])やwinverコマンドで開く[Windowsのバージョン情報]から、OSの製品名、バージョン、およびリビジョン番号を含むOSビルド番号を確認することができます。Windows 10およびWindows Serverのバージョン1709からは、コマンドプロンプトのcmdコマンド(またはcmd /c "ver")の実行結果にもリビジョン番号を含むOSビルド番号を確認できるようになりました(それ以前はリビジョン番号を含まないOSビルド番号)。

 

001

画面1 Windows標準のバージョン情報

 

その他のコマンドライン

 コマンドラインで製品名やOSビルド番号を確認する他の方法としては、Get-ComputerInfoコマンドレット、WMICコマンド、およびSysteminfoコマンドを利用できます。次のコマンドラインを実行すると同等の情報を取得できます。ただし、これらのコマンドでリビジョン番号までは知ることはできません。

Get-ComputerInfo | Select WindowsProductName,WindowsVersion, OsBuildNumber 

WMIC OS Get Caption, Version 

 

004

画面2 Get-ComputerInfo、WMIC、Systeminfo コマンドによる製品名、バージョン情報、ビルド番号の取得

 Windows 11の場合、Get-ComputerInfoでは OsName と OsDisplayVersion を使用する必要があります(※WindowsVersionは20H2のときの「2009」を最後に更新されていないか、無視されているようです)。

Get-ComputerInfo | Select OsName,OsDisplayVersion, OsBuildNumber 

 

002

 

レジストリから取得

 Windowsの製品名、バージョン番号、ビルド番号、リビジョン番号は、レジストリキーHKEY_LOCAL_MACHINE(HKLM)\SOFTWARE\Microsoft\Windows NT\CurrentVersionにある表2に示すレジストリ値に格納されています。参考として、表2にはGet-ComputerInfo、Systeminfo、WMICコマンドとの対応を含めています。

 

表2  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersionキー内のバージョン情報関連のレジストリ
  レジストリ値 Get-ComputerInfo Systeminfo WMIC
製品名 ProductName

WindowsProductName(11以外)

OsName(11を含むすべて)

OS名 Caption
バージョン番号(2004以前) ReleaseId WindowsVersion なし なし
バージョン番号(20H2以降) DisplayVersion

なし(10までなし、レジストリら取得↓)

OsDisplayVersio(11/2022)

なし なし
OSビルド CurrentBuild OsBuildNumber OSバージョン Version
リビジョン番号 UBR なし なし なし

 

 例えば、次の1行のコマンドラインを実行すると、リビジョン番号を含む詳細なビルド番号(例:19042.867)を取得することができます。

(Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").CurrentBuild + "." +(Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").UBR

 なお、レジストリ値DisplayVersionは、YYH1/YYH2(YYは西暦下2桁)形式が採用されたWindows 10バージョン20H2から追加されたものであり、以前のバージョンには存在しません。次のコマンドラインを実行すると、DisplayVersionまたはReleaseIdの適切な方からバージョン番号(例:2004、20H2)を取得します。

$winver = (Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion" -ErrorAction SilentlyContinue).DisplayVersion 

if($winver -eq $null){ 

   $winver = (Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows

NT¥CurrentVersion").ReleaseId 

Write-Host $winver

 

リモートマシン、仮想マシンから情報を取得する方法

 リモートのWindowsやWindows Serverに対話的にログオンすることなしに、ネットワーク経由で情報を取得するには、PowerShell RemotingのInvoke-Commandコマンドレットが便利です。

 Invoke-Commandコマンドレットは次のように実行します。1行目のコマンドラインで資格情報の入力が要求されるので、リモートコンピューターの管理者ユーザーの資格情報を指定してください。なお、PowerShell Remotingを利用するには、リモート接続される側で事前にEnable-PSRemotingを実行し、PowerShell Remotingを許可しておく必要があります。

$cred = Get-Credential 

Invoke-Command -ComputerName <コンピューター名> -ScriptBlock {<リモートコンピューターで実行するコマンドライン>} -                                                                        Credential $cred 

 Windows 10またはWindows Server 2016以降のHyper-Vホストでは、Hyper-VホストからWindows 10またはWindows Server 2016以降を実行するWindows仮想マシンのゲストに対してリモート実行できるPowerShell Directを利用できます。PowerShell Remotingによく似ていますが、仮想マシンのネットワーク接続は使用しません。また、ゲスト側でPowerShell Remotingを許可する必要もありません。使い方もPowerShell Remotingによく似ており、-ComputerNameの代わりに-VMNameパラメーターに仮想マシン名を指定します(画面3)。

$cred = Get-Credential 

Invoke-Command -VMName <仮想マシン名> -ScriptBlock {<リモートコンピューターで実行するコマンドライン>} -Credential $cred 

 次の画面3の実行例では、スクリプトブロックとして以下のコマンドラインを実行するように指定しています。実行結果として、Windowsの製品名、バージョン番号、およびリビジョン番号を含む詳細なビルド番号の3つの情報を取得できます。

(Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").ProductName; (Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").ReleaseId; (Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").CurrentBuild + "." + (Get-ItemProperty "HKLM:¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion").UBR 

 

003

画面3 Hyper-VホストからWindows仮想マシンのゲストに対するPowerShell Directを利用して、バージョン情報を取得しているところ

 PowerShell DirectはWindows 10およびWindows Server 2016以降のHyper-Vゲスト用の統合コンポーネント(Hyper-V PowerShell Direct Service)とやり取りして結果を取得します。そのため、Windows 8.1やWindows Server 2012 R2以前を実行するWindows仮想マシンでは利用できません。また、Linux仮想マシンにクロスプラットフォーム対応のPowerShell 7.0をインストールしても、PowerShell Directで接続できることはありません。

 

※本ページは2022年6月22日現在の情報です。

 

■ ホワイトペーパーをダウンロードする

こちらのページを含めた、全10テクニックをまとめたホワイトペーパーをご覧いただけます。以下のフォームよりお申込みください。

 

 

■ バージョン、ビルド情報の自動取得を実現する方法

 山市氏がご紹介したテクニックをより簡単に自動化できる方法をご紹介します。

詳しくはこちらをご確認ください。
https://www2.say-tech.co.jp/special/ryo-yamaichi/say/tec-001

最新記事