この記事ではKACE システム管理アプライアンス(SMA) のカスタムインベントリルールを利用して標準のインベントリで取得されないソフトウェア情報を収集する方法を説明します。
KACE Systems Management Appliance 13.2 Common Documents - Administrator Guide (Japanese - 13.0) (quest.com)
カスタムインベントリルールは、以下の処理に効果的です。
- Windowsの プログラムの追加と削除 セクションにリストされていないソフトウェアの管理。
- Windows の プログラムの追加と削除 セクションの同じエントリにリストされている複数のソフトウェアのバージョンで、特に バージョンの表示 情報が間違っているか不完全であるものの管理。
- カスタマイズされた詳細をレポートで使用するために取得。
- KACE エージェントによってレポートされない既存のアプリケーションまたは値に基づく、展開ルール、スクリプト、およびレポートの作成。
用途別の使用例については以下の記事もご参考ください。
カスタムインベントリルールの活用例 
1. はじめに
KACE SMAでは管理対象のデバイスに登録されているプログラム情報 ※ をインベントリ情報の「インストールされているプログラム」に表示します。
しかし、システムとして登録されていなくても、インストールされていると判断させたいソフトウェアや、展開済みの設定の有無を確認したい場合があります。
そのような用途において、カスタムインベントリルールを使用することで柔軟にシステム情報の把握が出来るようになります。
※ 具体的には(64bit/32bit両方の) HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\アプリケーション毎のキー
2. カスタムインベントリが提供する機能
エージェントがインベントリを収集するタイミングで、レジストリやファイルの属性を使用した情報の取得ができます。
以下のような仕組みを提供します。
・指定したファイルパスにそのファイルが存在するかどうか
・あるファイルのプロダクトバージョンが一定以上の値かどうか
・レジストリキーが存在するかどうか
・指定したレジストリの項目の値を取得する
・あるファイルのMD5ハッシュが指定したものと一致するかどうか
またコマンド実行の結果を含めることもできます。
こうした機能を応用することで、たとえば「"プログラム機能の追加と削除"には追加されないが配置されているプログラムがインストールされていること」や「配布した設定用のファイルあるいはレジストリ」の存在を把握することができます。
3. 条件付ルールと値戻しルール
カスタムインベントリルールには、以下2タイプのルールがあります。
条件付きルール
真偽値を判別するルール。条件にマッチしたらソフトウェアアイテムを持つものとしてカウントします。
真(True)であればインベントリ詳細の"インストール済みプログラム"にアイテム名が表示されます。
値戻しルール
ソフトウェアアイテムを持つものとしてカウントし、かつ値を集めるルール。
条件が真の場合、"インストール済みプログラム"にアイテム名が表示され、同時に、収集できた値をカスタムインベントリフィールド(デバイス詳細のソフトウェアセクション)に登録します。探した値がない場合やコマンドが0以外で終了するとFalse扱いになります。
カスタムインベントリフィールドに期待した値が入るようにコマンド出力やレジストリ内容を読み取ることで、収集された情報がデバイスと紐づく形で収集されます。
一般に、ルール名が~Existsや~Equals、~Thanで終わるものは条件付きルールです。~Returnの名前をもつルールは値戻しルールとなります。
4.カスタムインベントリルールを持つソフトウェアアイテムの作成手順
4-1.ソフトウェアインベントリの表示
管理者コンソールの左ペイン から インベントリ| ソフトウェア へ移動します。
ソフトウェアアイテムの一覧が表示されます。
4-2.ソフトウェアアイテムの作成
[アクションの選択]→[新しいアイテムの追加]
・名前: 任意 例 CIR-SampleTest
・バージョン: 任意 任意の文字または数字
・発行元(ベンダー):任意 
・メモ: 任意。目的などを記述
・サポートされているオペレーティングシステム: ルールの検索対象とするOSをツリーから選択します。選択しない場合ルールが実行されません。
・カスタムインベントリルール:  (論理行1行で記述、空行は含めないようにしてください)
例 : FileExists(C:\Windows\System32\notepad.exe)
ソフトウェアアイテム作成画面の「カスタムインベントリルール:」の横の[?]をクリックしますと
ルール記述のヘルプが表示されます。より詳細な内容については  『KACEシステム管理アプライアンス管理者ガイド』 をご確認ください
目的の検索対象についてはお客様にて調査の上でご利用いただく必要があります。
現行バージョン(14.0以上)のエージェント向けの説明
| 取得対象レジストリのキー | ルール内でのキー指定 | 確認するOSコマンド | 
| 64bit(Native) HKLM\Software\\MyKey | HKLM\Software\MyKey または HKLM64\Software\MyKey または HKLMNAT\Software\MyKey | C:\Windows\System32\reg.exe query HKLM\Software\MyKey または C:\Windows\Syswow64\reg.exe query HKLM\Software\MyKey /reg:64 | 
| HKLM\Software\WOW6432Node\MyKey | HKLM32\Software\MyKey | C:\Windows\System32\reg.exe query HKLM\Software\WOW6432Node\MyKey または C:\Windows\System32\reg.exe query HKLM\Software\MyKey /reg:32 または C:\Windows\Syswow64\reg.exe query HKLM\Software\MyKey | 
[重要] (13.2エージェントまで該当)64 Bit Windows OSでのリダイレクションの考慮
バージョン14.0以上のWindows向けKACEエージェントは64bitですのでこの項目での考慮は必要ありません。
14.0以上のWindows用64bit版エージェント更新の準備 (4375863)
バージョン13.2までのWindows用KACEエージェントは32bit アプリケーションとして動作するため、レジストリの参照・システムファイル参照・コマンド呼び出しを伴う場合、原則として32bit 環境の情報を使用します。
たとえば、
RegistryKeyValueReturn(HKEY_LOCAL_MACHINE\Software\MyKey, mydata, TEXT)
このルールは
32bitのWindowsOSにおいて キー HKLM\Software\MyKeyにあるmydataの値を返しますが、
64bitのWindowsOSにおいてはキー HKLM\Software\WOW6432Node\MyKey にあるmydataの値を返します。(system32のregedit.exeで表示時)
64bitのWindows OSにおいてKACEエージェントから 64bit のレジストリを参照したい場合、次のように指定します
RegistryKeyValueReturn(HKEY_LOCAL_MACHINE64\Software\MyKey, mydata, TEXT)
同じ設定で 32bit WindowsにたいしてもHKLM\Software\MyKeyのmydataの値を取得できます。
64bitWindowsシステム内で同じキーについて32bit/64bitそれぞれの値を区別して確認するには次のようにします。
対象 ルール内でのキー指定 確認するOSコマンド 32bit(WOW64) HKEY_LOCAL_MACHINE\Software\MyKey 
または
HKLM\Software\MyKeyC:\Windows\System32\reg.exe query HKEY_LOCAL_MACHINE\Software\MyKey /reg:32 
または
C:\Windows\Syswow64\reg.exe query HKEY_LOCAL_MACHINE\Software\MyKey64bit(Native) HKEY_LOCAL_MACHINE64\Software\MyKeyまたは 
HKLM64\Software\MyKeyC:\Windows\System32\reg.exe query HKEY_LOCAL_MACHINE\Software\MyKey 
または
C:\Windows\Syswow64\reg.exe query HKEY_LOCAL_MACHINE\Software\MyKey /reg:64この仕組みの詳細については以下のナレッジベースにてご案内しております。
64bit Windowsの32bitリダイレクションの取り扱いについて (4272388)HKLMNAT というキーワードを使用することで、32 ビットあるいは64 ビットそれぞれOSネイティブのレジストリ領域にアクセスすることができます。(v10.0以上での機能追加)
例:HKLMNAT\Software\ABC と指定すると、
32bit WindowsではHKLM\Software\ABCの指定を意味すると同時に
64bit Windowsでは64bitのHKLM\Software\ABC を指します(WOW6432のHKLM\Software\ABC を参照しない)。
1つの設定でOSネイティブのキーを参照させたい場合に活用できます。
4-3.インベントリ更新
チェックインをお待ちいただくか、KACE管理コンソールにてコンピュータインベントリの強制インベントリボタンからインベントリを行い、 最新のインベントリ情報に更新し ます。
PCが手元にある場合、「管理者: コマンドプロンプト」から以下のコマンドを実行することですぐに更新できます。
kdeploy -ci
KDeploy.exeは以下の場所にあります。
(バージョン14.0以上: Windowsオペレーティングシステム) C:\Program Files\Quest\KACE
(バージョン13.2以前: 64bit Windowsオペレーティングシステムの場合) C:\Program Files (x86)\Quest\KACE
(バージョン13.2以前: 32bit Windowsオペレーティングシステムの場合) C:\Program Files\Quest\KACE 
4-4.結果の確認
インベントリが更新されるとカスタムインベントリルールにしたがってソフトウェアを収集します。
そのマシンの「インストールされているプログラム」の項目には 「4-2.ソフトウェアアイテムの作成」
で指定したソフトウェアアイテム名が追加されます。
また、値返却ルール を用いた場合、「インストールされているプログラム」への
追加に加えて、カスタムインベントリフィールドに「ソフトウェアアイテム名: 値」の形式で記載されます。
■ 設定サンプル
サンプル1
| 目的 | Windows Defenderの定義ファイルのバージョンを取得 | 
| 実装方法 | レジストリ値 HKLM\SOFTWARE\Microsoft\Windows Defender\Signature Updates の AVSignatureVersion 値 | 
| 採用する関数 | RegistryValueReturn | 
| カスタムインベントリルールの記述 | RegistryValueReturn(HKLM\SOFTWARE\Microsoft\Windows Defender\Signature Updates, AVSignatureVersion, TEXT) | 
この項目は近年のKACE SMAバージョンでは Microsoft Defender の署名バージョン(インベントリ | デバイス | セキュリティ | セキュリティ | Microsoft Defender ) としてデフォルトで採取されるようになっています。
 
サンプル2
| 目的 | PowerShell のバージョンを取得 | 
| 実装方法 | コマンド出力。 powershell.exe -Command Write-Output $PSVersionTable | 
| 採用する関数 | ShellCommandTextReturn | 
| カスタムインベントリルールの記述 | 
 | 
■ 条件に合致するフィールドをもつデバイスを抽出するデバイスSmartラベルを作る
デバイスインベントリの一覧にてSmart Labelタブをクリックして カスタムフィールドの下のソフトウェア名を選択し、検索条件を設定できます。
[CIR_ITEM名] [次を含む] カスタムフィールドに含まれる文字列
指定したカスタムソフトウェアアイテムを持つデバイスのうち、特定の値にヒットするマシンのみをグループ化できます。
 
■デバイス名とカスタムインベントリフィールドを持つレポートの作成
カスタムインベントリフィールドとデバイス名のレポートを作成するには、レポート作成ウィザードのトピックで「デバイス」を選択し、出力項目に「カスタムインベントリフィールド」セクションのアイテムを追加します。
カスタムインベントリフィールドはレポート作成にて「コンピュータ(デバイス)」のトピックから指定することができます。
[レポート作成]->[アクションの選択]→[新しいレポートの追加(ウィザード)]をクリックして
レポートを作成します。
5-1. タイトルおよびトピック
・タイトル:任意
・レポートカテゴリ (必須):入力あるいは選択
・説明:任意(空)
・レポートトピック:デバイス を選択
[次へ]ボタンを押します。「表示するフィールド」の選択画面に移動します
5-2. 表示するフィールド
「+コンピュータID情報」から「システム名」にチェックを入れます。
「+カスタムフィールド」から ソフトウェアアイテム名(例:CIR-SampleTest)にチェックを入れます。
[次へ]を押すと、「列の順番」の選択画面に移動します。
5-3. 列の順番
そのまま「次へ」ボタンを押します。
5-4. 並べ替えおよび区切り
そのまま「次へ」ボタンを押します。
5-5. フィルタ
[レコードをフィルタリングするルールの指定]ボタンを押してソフトウェアに「CIR-SampleTest」を持つPCのみを出力するようにします。
次のすべての条件に一致
フィールド名:ソフトウェアタイトル
演算子:次の値を含む
値:CIR-SampleTest
編集した行の右側の保存ボタンを押します。
5-6. その後、[戻る]ボタンのとなりの[保存]ボタンを押しますとレポート作成が完了します。