増殖するOperatingSystemSKU(その2)――Windows Serverのインストールオプションの識別あれこれ:その知識、ホントに正しい? Windowsにまつわる都市伝説(88)(2/2 ページ)
Windows VistaおよびWindows Server 2008以降では、SKU(Stock Keeping Unit)という番号で「エディション」を識別できることをご存じでしょうか。Windows Serverの場合は、インストールオプションでSKUが区別されることもあります。前回は、クライアントOSのSKU番号の謎解きでしたが、今回はWindows ServerのSKU番号の謎解きです。
Windows Server 2012/2012 R2はSKU番号でインストールオプションを区別しない
Windows Server 2012/2012 R2では、インストールオプションの「GUI使用サーバー」が以前の「フルインストール」に相当します。以前と同様に、インストール時にインストールオプションとして「GUI使用サーバー」または「Server Coreインストール」を選択してインストールします。しかし、どちらでインストールした場合でも、SKU番号は同じになります。Windows Server 2012/2012 R2は、エディションでのみSKU番号が区別され、インストールオプションでは区別されなくなったのです(画面3)。
その理由は簡単です。Windows Server 2012/2012 R2では、インストール完了後に「サーバーマネージャー」の「役割と機能」から以下のコンポーネントを追加または削除することで、Server CoreインストールからGUI使用サーバーに、あるいはGUI使用サーバーからServer Coreインストールに切り替えることができるようになったからです(画面4)。
- サーバー グラフィック シェル(Server-Gui-Shell)
- グラフィック管理ツールとインフラストラクチャ(Server-Gui-Mgmt-Infra)
インストールオプションは初期状態でインストールされるコンポーネントの違いにすぎず、SKU番号で区別するべきものではなくなりました。
ここで問題になるのは、以前のようにSKU番号でインストールオプションを識別できなくなったことです。筆者が考えたのは「サーバー グラフィック シェル(Server-Gui-Shell)」機能がインストールされていればGUI使用サーバー、インストールされていなければServer Coreインストールと判断する方法です。PowerShellであれば、次のように簡単に記述できます(画面5)。
PS C:\> if((Get-WindowsFeature -name Server-Gui-Shell).InstallState -eq "Installed") {Write-Host "GUI Install"} else {Write-Host "Server Core Install"}
Windows Server 2016で再びインストール後の切り替え不可に! SKU番号は?
Windows Server 2016では、インストールオプションから「Server Coreインストール」という表現は消え、従来の「フルインストール」「GUI使用サーバー」に相当するものは「デスクトップエクスペリエンス」という名称に変更されました。
例えば、インストールオプション「Windows Server 2016 Datacenter」はServer Coreインストール、「Windows Server 2016 Datacenter(デスクトップエクスペリエンス)」が従来の「フルインストール」や「GUI使用サーバー」に相当するものです。そして重要な点は、これらのインストールオプションは、“インストール後に切り替えることができなくなった”ということです。
また、Windows Server 2016では、「Nano Server」というServer Coreインストールよりも軽量なインストールオプションが追加されました。このオプションは、インストールメディアの「NanoServer\NanoServer.wim」ファイルをカスタマイズして、物理サーバや仮想マシンに展開するという方法でインストールします。あるいは、WindowsコンテナのベースOSイメージ(microsoft/nanoserver)として、Docker Hubリポジトリから入手します。
Win32_OperatingSystem classのドキュメントを見ると、次のようにServer CoreインストールのSKU番号として「147」と「148」が用意されているように読み取れます。
PRODUCT_STANDARD_SERVER (7)
Windows Server Standard Edition (Desktop Experience installation)
PRODUCT_DATACENTER_SERVER (8)
Windows Server Datacenter Edition (Desktop Experience installation)
PRODUCT_DATACENTER_NANO_SERVER (143)
Windows Server Datacenter Edition (Nano Server installation)
PRODUCT_STANDARD_NANO_SERVER (144)
Windows Server Standard Edition (Nano Server installation)
PRODUCT_DATACENTER_WS_SERVER_CORE (147)
Windows Server Datacenter Edition (Server Core installation)
PRODUCT_STANDARD_WS_SERVER_CORE (148)
Windows Server Standard Edition (Server Core installation)
しかし、実際に確認してみると、そうではありませんでした。例えば、Windows Server 2016の場合、デスクトップエクスペリエンスでインストールしても、Server Coreインストールでインストールしても、SKU番号は同じ「8」(Get-ComputerInfoコマンドレットは、番号ではなく「DatacenterServerEdition」)を返します。SKU番号「147」と「148」は別の目的に使われているのか、それとも将来のために予約されているのか、それともWindows Server 2016の不具合(実装漏れ)なのかは、現時点では不明です。仮想マシンで動作するNano Serverは、別のSKU番号で期待通りに区別できました。
Windows Server 2016には「サーバー グラフィック シェル(Server-Gui-Shell)」という機能は存在しないため、Windows Server 2012/2012 R2の方法でインストールオプションを識別することができません。ではどうすればよいのか。Get-ComputerInfoコマンドレットが出力する膨大な情報を眺めていたら、「WindowsInstallationType」と「OsServerLevel」が使えそうなことが分かりました(画面6)。
画面6 Get-ComputerInfoコマンドレットの出力結果の「WindowsInstallationType」または「OsServerLevel」で、Windows Server 2016の3つのインストールオプションを識別できる
以下の画面7は、上からWindows Server 2016 Datacenterデスクトップエクスペリエンス、リモート(仮想マシン)のWindows Server 2016 Datacenter評価版のServer Coreインストール、リモート(仮想マシン)のWindows Server 2016 Datacenter Nano Serverで、Get-ComputerInfoコマンドレットを実行したものです。
画面7 上からWindows Server 2016 Datacenterデスクトップエクスペリエンス、Windows Server 2016 Datacenter評価版のServer Coreインストール、Windows Server 2016 Datacenter Nano Server
WindowsコンテナのベースOSイメージとしてのNano Server(microsoft/nanoserver)は、面白い結果を返しました。「WindowsInstallationType」と「OsServerLevel」は、それぞれ「Nano Server」と「NanoServer」を返しました。
Windows Serverコンテナとして実行した場合(ホストとカーネルを共有)、OsOperatingSystemSKUはコンテナホストのSKU番号を返しているようです。Hyper-Vコンテナとして実行した場合(カーネルを提供する専用の仮想マシン上で動く)、Win32_OperatingSystem classのドキュメントには書かれていない(非公表と思われる)SKU番号「149」を返しました(画面8)。
画面8 ベースOSイメージとしてのNano Serverは、Windowsコンテナの場合、コンテナホストのOsOperatingSystemSKU、Hyper-Vコンテナの場合は未公表のSKU番号「149」を返した
ちなみに、Windows Server Coreイメージ(microsoft/windowsservercore)をベースOSイメージとしてHyper-Vコンテナを実行した場合、特別なSKU番号ではなく「DatacenterServerEdition(8)」を返します。これは実に興味深い結果です。
ところで、Windows Serverでも2017年の秋から、年に2度の機能更新を提供する「Semi-Annual Channel」がスタートする予定です。現在のWindows Server 2016は「Long Term Servicing Channel:LTSC」(Long Term Servicing Branch:LTSBから名称変更)として従来のサポートポリシーに基づいてサポートされます。Semi-Annual Channelの対象はServer CoreインストールとNano Serverで、Nano ServerはWindowsコンテナのためのベースOSイメージとしてのみの提供になります。LTSCの対象はデスクトップエクスペリエンスとServer Coreインストールです。Semi-Annual Channelがスタートすると、Windows Serverのバージョンやエディション、インストールオプションの識別は、ますますややこしくなりそうです。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windowsで起動時に自動実行される不要なプログラムを「見つける」方法
アプリケーションのインストールなどを繰り返していると、いつのまにかWindowsの起動時に自動実行されるプログラムが増殖する。これらを確認するには、Windows 2000なら[コンピュータの管理]を、Windows XPなら[システム情報]を使う。またWindows XPでは[システム構成ユーティリティ]で削除指定ができる。 - Windowsのsvchost.exeプロセスとは? ―sc.exeでサービスをコマンドラインから制御する―
リッスンしているネットワーク・ポートを調べていると、svchost.exeというプロセスが所有者となっていることがよくある。svchost.exeは、ネットワーク関連の基本的なサービスを起動するための親となるプロセスであり、いくつかのグループに分けてサービスを起動している。scコマンドを使うと、サービスをコマンド・プロンプトから制御することができる。 - Windows 10のWindows Updateサービスを停止しようと考えている方へ
Windows 10のWindows Updateは、以前のWindowsから大きく変わりました。Windows 10になってからも変更は続いています。半ば強制的なWindows Updateに対抗する最終手段は「Windows Updateサービス」の無効化ですが、どうしてもというなら、影響を知った上で一時的に無効化するのがよいでしょう。 - Windows 10初期リリース(1507)のサービス終了のお知らせ
マイクロソフトは2017年4月12日(日本時間、以下同)、当初の予定通り、Windows Vista(Service Pack 2)に対する全ての製品サポートを終了しました。次にサポートが終了するのはWindows 7ですが、まだ3年もあると思っていませんか。それよりも前に、セキュリティ更新提供が終了するWindows 10があります。