SCCM と WMI クエリを使用してすべてのラップトップとデスクトップを検出する方法

企業環境で多数のポータブルデバイスを扱うのは、面倒な作業になりがちです。特に、すべてのラップトップを対象としたSCCMコレクションを構築しようとして、システムプロパティから明確な方法を見つけられない場合はなおさらです。私も同じ経験をしました。手動でのタグ付けや分かりにくいリストに悩まされることなく、ラップトップとデスクトップを区別する確実な方法を見つけようとしてきたのです。主な問題は、Windowsには必ずしもフィルタリングに適したプロパティが用意されているわけではないことです。特に、XPのような古いOSバージョンでは、PCSystemTypeのような新しいクラスをサポートしていないため、その傾向が顕著です。そこで、 Win32_SystemEnclosureクラスのChassisTypesのような、デバイスの物理的なフォームファクターを記述する、より汎用的なプロパティを見つけるというアイデアが生まれました。

計画はこうです。ChassisTypesに基づいて、デバイスをデスクトップ、ラップトップ、サーバーに分類するWMIクエリを作成します難しいのは、各タイプの一般的な数値を知らない限り、これらの値は必ずしも明確ではないということです。例えば、ラップトップは8、9、10、11、12、14、18、21といった値を持つ傾向があり、これらはポータブル、ノートブック、または類似のシャーシタイプに対応します。そこで、これらの値をフィルタリングするWMIフィルターを作成し、それをSCCMクエリに変換することで、ラップトップのみをターゲットとする処理を自動化できます。少し奇妙ですが、ChassisTypes情報が利用可能で最新であれば、ほとんどのハードウェアとOSバージョンで問題なく動作します。

WMIフィルターとSCCMコレクションでChassisTypesを使用する方法

ポータブルデバイス向けWMIフィルターの使用

  • グループポリシー管理コンソール(GPMC)を開き、 WMIフィルターに移動します。ここで、関連するChassisTypesをチェックする新しいフィルターを作成できます。
  • このクエリを使用してください。 select * from Win32_SystemEnclosure where ChassisTypes = "8" or ChassisTypes = "9" or ChassisTypes = "10" or ChassisTypes = "11" or ChassisTypes = "12" or ChassisTypes = "14" or ChassisTypes = "18" or ChassisTypes = "21" これはほとんどの種類のラップトップとノートブックをカバーします。あるセットアップでは問題なく動作しましたが、古いハードウェアやVMセットアップでは、 ChassisTypes情報が正しく入力されない場合があります。

この種のフィルターは、特に混在環境において、デバイスのフォームファクターに基づいてGPOやスクリプトを制限したい場合に適しています。ただし、SCCMの場合は、コレクションのメンバーシップに適したクエリに変換する必要があります。

ChassisTypes 属性を使用して SCCM デバイス コレクションを作成する

  • System Center Configuration Managerで、[資産とコンプライアンス][デバイス コレクション]の順に移動します。
  • 新しいコレクションを作成し、クエリルールを追加します。次のクエリを使用します。 select SMS_R_SYSTEM. ResourceID, SMS_R_SYSTEM. Name, SMS_R_SYSTEM. SMSUniqueIdentifier from SMS_R_System inner join SMS_G_System_SYSTEM_ENCLOSURE on SMS_G_System_SYSTEM_ENCLOSURE. ResourceID = SMS_R_System. ResourceID where SMS_G_System_SYSTEM_ENCLOSURE. ChassisTypes in ("8", "9", "10", "11", "12", "14", "18", "21")
  • このプロセスはChassisTypesプロパティにリンクし、既知の属性値に基づいてラップトップまたはポータブル デバイス以外のすべてをフィルター処理します。

もちろん、Windowsは必要以上に手間をかけざるを得ませんが、これは手動タグ付けなしで「自動」識別に最も近い方法です。その後、SCCMを使ってノートパソコンとタブレットにのみソフトウェアやポリシーを展開できます。これは、複数のハードウェアを混在させて管理する際に非常に便利です。

ノートパソコンとデスクトップパソコンの比率を素早く比較するレポートの作成

  • SCCM レポートを実行している場合、SQL クエリによって実際のスナップショットを取得できます。 SELECT CASE ChassisTypes0 WHEN '8' THEN 'Notebooks' WHEN '9' THEN 'Notebooks' WHEN '10' THEN 'Notebooks' WHEN '11' THEN 'Notebooks' WHEN '12' THEN 'Notebooks' WHEN '14' THEN 'Notebooks' WHEN '18' THEN 'Notebooks' ELSE 'Desktops' END AS "Workstation Type", count(distinct sys.name0) as ClientCount from v_GS_SYSTEM_ENCLOSURE ENC INNER JOIN v_R_System SYS ON ENC. ResourceID = SYS. ResourceID WHERE sys.client0=1 AND sys.obsolete0=0 AND active0=1 GROUP BY CASE ChassisTypes0 WHEN '8' THEN 'Notebooks' WHEN '9' THEN 'Notebooks' WHEN '10' THEN 'Notebooks' WHEN '11' THEN 'Notebooks' WHEN '12' THEN 'Notebooks' WHEN '14' THEN 'Notebooks' WHEN '18' THEN 'Notebooks' ELSE 'Desktops' END ORDER BY 2 desc
  • こうすることで、何が何なのかが一目で分かり、魅力的になります。この例では、デスクトップが約2, 832台、ノートパソコンが約109台と報告されており、かなりの差があります。

結局のところ、複雑に聞こえるかもしれませんが、ChassisTypes属性を活用することは、ネットワーク内のラップトップを識別するための賢い回避策です。特に、より分かりやすいプロパティが信頼できなかったりサポートされていない場合はなおさらです。ハードウェアやOSのバージョンによっては、情報が異なったり、欠落したりする可能性があるため、一般的な値を覚えておき、まずフィルターをテストする必要があります。

これで誰かの時間短縮になればいいな。デバイス識別の鍵が解読できれば、生活がこんなにも簡単になるなんて、本当に驚きです。