増殖するOperatingSystemSKU(その2)――Windows Serverのインストールオプションの識別あれこれその知識、ホントに正しい? Windowsにまつわる都市伝説(88)(2/2 ページ)

» 2017年08月01日 05時00分 公開
[山市良テクニカルライター]
前のページへ 1|2       

Windows Server 2012/2012 R2はSKU番号でインストールオプションを区別しない

 Windows Server 2012/2012 R2では、インストールオプションの「GUI使用サーバー」が以前の「フルインストール」に相当します。以前と同様に、インストール時にインストールオプションとして「GUI使用サーバー」または「Server Coreインストール」を選択してインストールします。しかし、どちらでインストールした場合でも、SKU番号は同じになります。Windows Server 2012/2012 R2は、エディションでのみSKU番号が区別され、インストールオプションでは区別されなくなったのです(画面3)。

画面3 画面3 Windows Server 2012/2012 R2では、インストールオプションが違ってもSKU番号は変わらない(左がGUI使用サーバー、右がServer Coreインストール)

 その理由は簡単です。Windows Server 2012/2012 R2では、インストール完了後に「サーバーマネージャー」の「役割と機能」から以下のコンポーネントを追加または削除することで、Server CoreインストールからGUI使用サーバーに、あるいはGUI使用サーバーからServer Coreインストールに切り替えることができるようになったからです(画面4)。

  • サーバー グラフィック シェル(Server-Gui-Shell)
  • グラフィック管理ツールとインフラストラクチャ(Server-Gui-Mgmt-Infra)

画面4 画面4 Windows Server 2012/2012 R2は、機能の追加または削除でGUI使用サーバーとServer Coreインストールを切り替えることができるようになった

 インストールオプションは初期状態でインストールされるコンポーネントの違いにすぎず、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"}
「サーバー グラフィック シェル(Server-Gui-Shell)」機能のインストールの有無を確認
画面5 画面5 「サーバー グラフィック シェル(Server-Gui-Shell)」機能のインストールの有無で、現在のインストールオプションを識別する

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 画面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 画面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 画面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社)。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。