
Windowsの運用管理を快適にする10の裏ワザ/表ワザ
[ テクニカルライター 山市 良 ]
2021年07月08日配信
2023年09月28日更新
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 |
SAC | 2004(VB_RELEASE) | 10.0.19041.x | 全エディション 18か月 |
SAC | 20H2(VB_RELEASE) | 10.0.19042.x |
Home/Pro/Server 18か月 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 |
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 10およびWindows Server 2016以降のデスクトップエクスペリエンス(LTSCのみ)では、[設定]アプリの[システム]の[詳細情報](バージョン1909以前は[バージョン情報])やwinverコマンドで開く[Windowsのバージョン情報]から、OSの製品名、バージョン、およびリビジョン番号を含むOSビルド番号を確認することができます。Windows 10およびWindows Serverのバージョン1709からは、コマンドプロンプトのcmdコマンド(またはcmd /c "ver")の実行結果にもリビジョン番号を含むOSビルド番号を確認できるようになりました(それ以前はリビジョン番号を含まないOSビルド番号)。
画面1 Windows標準のバージョン情報
コマンドラインで製品名やOSビルド番号を確認する他の方法としては、Get-ComputerInfoコマンドレット、WMICコマンド、およびSysteminfoコマンドを利用できます。次のコマンドラインを実行すると同等の情報を取得できます。ただし、これらのコマンドでリビジョン番号までは知ることはできません。
Get-ComputerInfo | Select WindowsProductName,WindowsVersion, OsBuildNumber
WMIC OS Get Caption, Version
Windows 11の場合、Get-ComputerInfoでは OsName と OsDisplayVersion を使用する必要があります(※WindowsVersionは20H2のときの「2009」を最後に更新されていないか、無視されているようです)。
Get-ComputerInfo | Select OsName,OsDisplayVersion, OsBuildNumber
Windowsの製品名、バージョン番号、ビルド番号、リビジョン番号は、レジストリキーHKEY_LOCAL_MACHINE(HKLM)\SOFTWARE\Microsoft\Windows NT\CurrentVersionにある表2に示すレジストリ値に格納されています。参考として、表2にはGet-ComputerInfo、Systeminfo、WMICコマンドとの対応を含めています。
レジストリ値 | 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
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