2013/01/08

DirectAccess の WMI クエリの謎解きと SKU 番号全リスト

Windows Server 2012 の DirectAccess を展開し、「DirectAccess クライアントのセットアップ」ウィザードで「モバイル コンピューターに対してのみ DirectAccess を有効にする」をチェックすると、GPO「DirectAccess クライアントの設定」に「DirectAccess - Laptop only WMI filter」が設定されます。この WMI フィルターには、次の 2 つの WMI クエリが定義されています。

Select * from Win32_ComputerSystem WHERE PCSystemType = 2

Select * from Win32_OperatingSystem WHERE (ProductType = 3) OR (Version LIKE '6.2%' AND (OperatingSystemSKU = 4 OR OperatingSystemSKU = 27 OR OperatingSystemSKU = 72 OR OperatingSystemSKU = 84)) OR (Version LIKE '6.1%' AND (OperatingSystemSKU = 4 OR OperatingSystemSKU = 27 OR OperatingSystemSKU = 70 OR OperatingSystemSKU = 1 OR OperatingSystemSKU = 28 OR OperatingSystemSKU = 71))


拙著「Windows Server 2012 テクノロジ入門」では、“ノートブックコンピューター(PCSystemType=2)を識別するフィルターです(Windows Server 2008 R2以降のサーバーを識別するフィルターも含んでいます)。”とあやふや (というか不正確) に書いてしまいましたが、ようやくはっきりしました。完全な SKU 番号のリストも見つけちゃいました。


1 つ目の WMI クエリは、ノートブック (モバイル) コンピューターを識別します。手元の PC で確認したければ、WMIC ComputerSystem GET PCSystemType を実行してみてください。

Win32_ComputerSystem class (Windows) > PCSystemType
    1  Desktop
    2  Mobile
    3  Workstation
    ....
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394102(v=vs.85).aspx

2 つ目のながーい WMI クエリは、複雑です。最初の ProductType = 3 は、サーバー(非ドメイン コントローラー) を識別します。Windows Server 2012 と Windows Server 2008 R2 も DirectAccess のクライアントとして機能するので入っているのでしょう。たぶん。手元の PC で確認したければ、WMIC OS GET ProductType を実行してみてください。

Win32_OperatingSystem class (Windows) > ProductType
    1  Work Station
    2  Domain Controller
    3  Server

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394239(v=vs.85).aspx

次の Version LIKE '6.2%' AND (Operating System SKU = 4 OR ...) と Version LIKE '6.1%' AND (Operating System SKU = 4 OR ...) は、それぞれ Windows 8 と Windows 7 の SKU (Stock Keeping Unit) 番号からエディションを識別しているものでした。上の Win32_OperatingSystem class (Windows) の SKU リストは古い (Vista/2008 のもの) ため、よく分からなかったのですが、Windows 8 が正式リリースされて以後、実機でいくつかのエディションを確認してはっきりしました。手元の PC で確認したければ、WMIC ComputerSystem GET Caption, OperatingSystemSKU を実行してみてください。

Windows 8 (Version 6.2.x) の主なエディションの OperatingSystemSKU
    4  Microsoft Windows 8 Enterprise
    27  Microsoft Windows 8 Enterprise N

    48  Microsoft Windows 8 Pro
    49  Microsoft Windows 8 Pro N
    72  Microsoft Windows 8 Enterprise Evalution (90 日評価版)
    84  Microsoft Windows 8 Enterprise N Evalution
(90 日評価版 N)
    98  Windows 8 N
   101  Microsoft Windows 8
   103  Microsoft Windows 8 Pro with Media Center


Windows 7 (Version 6.1.x) の主なエディションの OperatingSystemSKU
     3  Microsoft Windows 7 Home Premium
     4  Microsoft Windows 7 Enterprise

    26  Microsoft Windows 7 Home Premium N
    27  Microsoft Windows 7 Enterprise N
   
48  Microsoft Windows 7 Professional
    49  Microsoft Windows 7 Professional N
    65  Microsoft Windows Embedded Standard (Windows Thin PC を含む)
    70  Microsoft Windows 7 Enterprise E

     1  Microsoft Windows 7 Ultimate
    28  Microsoft Windows 7 Ultimate N
    71  Microsoft Windows 7 Ultimate E



赤字のものが WMI クエリに入っているものです。

というわけで、「DirectAccess - Laptop only WMI filter」の意味は、

『"ノートブック (モバイル) "である』かつ『 "サーバー" または "Windows 8 Enterprise" または "Windows 7 Enterprise" または "Windows 7 Ultimate" である』

という条件が真の場合に、GPO の適用対象になるということになります。Windows 8 Enterprise 評価版 (Evalution) の SKU 番号が製品版と違うこと (Windows 7 Enterprise は同じでした) や、N バージョン (E欧州向けの Media Player を含まない版) 、E バージョン (幻の欧州向けの IE なし版) の存在が、WMI クエリを複雑にしていました。ノートブックのサーバーが含まれることに?な感じもしますが、DirectAccess 対応のクライアントをすべて含める WMI クエリにするため、こうなっているのでしょう。たぶん。


 ・・・
OperatingSystemSKU の完全なリスト

Windows 7 の SKU 70 と 71 が最後までわからなかったのですが、Windows Vista ~ Windows 8 までの SKU の全リストを見つけました。16 進数ですが。なお、E エディションは存在しないはずで、以下のリストでも Not supported になっています。

GetProductInfo function (Windows)
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724358(v=vs.85).aspx


ところで、このリストには Windows RT がありませんねGetProductInfo はデスクトップ アプリ用の API ですけど...

0 件のコメント: