拡張シグニチャー・テンプレート

9.2.2 以降で使用可能。拡張シグニチャーは、ソフトウェア認識のために使用される柔軟なシグニチャーです。このシグニチャーは、エクスポートされる多数の変数と、これらの変数に値を割り当てるために必要な操作の宣言から構成されます。BigFix サーバーおよびソフトウェア・カタログを更新して、拡張シグニチャー機能でインストール済みソフトウェアの詳細バージョンをレポートできるようにします。

オペランドおよび演算子

各拡張シグニチャーは、ソフトウェア項目がターゲット・コンピューター・システム上にインストールされているかどうか検出するために、ソフトウェア・スキャンによって使用される処理命令のセットとして見ることができます。これらの処理の式は、オペランド演算子の 2 つのタイプのコンポーネントで構成されています。オペランドは操作されるオブジェクトで、演算子は特定のアクションを表す記号です。オペランドと演算子は、スカラー (1 つの値のみで構成される) またはベクトル (複数の値で構成される) のいずれでもかまいません。

BigFix Inventory でサポートされるスキーマのバージョンは 2.7 です。

BigFix インベントリーによって解釈される変数

以下の変数は BigFix インベントリーによって解釈されます。
  • IS_INSTALLED - 必須

    ソフトウェアが検出されると、条件は true に設定される必要があります。ソフトウェアが検出されない場合、条件は false に設定される必要があります。

  • INSTALL_PATH - オプション

    値はインストール・パスに表示されます。

  • 10.0.0 DETAILED_VER

    変数 DETAILED_VER を使用して、詳細バージョンを検索します。この情報は、「コンポーネントの詳細バージョン」列にレポートされます。値は 「コンポーネントの詳細バージョン」列に表示されます。コンポーネント・リリースはカタログ・エントリーから参照されます。

拡張シグニチャー・テンプレート

以下のセクションに、新規拡張シグニチャーを作成するのに役立つ拡張シグニチャー・テンプレートと、それらのテンプレートで使用する値を説明する必要な演算子とオペランドをリストします。この表には、BigFix Inventory で作成される拡張シグニチャーのテンプレートがリストされています。

注: XML 検証が失敗しないようにするために、作成する拡張シグニチャーに以下の XML エレメントが存在することを確認してください。これが存在しない場合、XML 検証が失敗します。
<Variable name="IS_INSTALLED">
...
</Variable>
識別または検出の対象 サンプル・テンプレート
レジストリーから取得した値を使用した詳細バージョンのレポート 次のテンプレートは、4.0 値のレジストリー・キーの存在を確認し、詳細バージョンとしてキーをレポートします。
<Variable name="DETAILED_VER">
  <RegKeyValue entry="Installed Version" key="HKEY_LOCAL_MACHINE\Software\Microsoft\SMS\Client\Client Components\Component Name\Installation Properties" section="64or32"/>
  </Variable>
  <Variable name="IS_INSTALLED">
  <Compare relation="eq" type="string">
  <StringSlice inputString="$(DETAILED_VER)" startIndex="0" endIndex="3"/>
  <ValueOf value="4.0"/>
  </Compare>
</Variable>
ファイル名

以下のテンプレートは、ファイル名の識別または検出を検査します。

<Variable name="IS_INSTALLED" export="true">
  <Compare type="string" relation="ne">
    <VectorToScalar>
      <FindFilePathEx name="A_FILENAME.EXE"/>
    </VectorToScalar>
    <ValueOf value=""/>
  </Compare>
</Variable>

ファイル・サイズを指定する必要はありません。

複数の Windows レジストリー・キーの存在

以下のテンプレートは、複数の Windows レジストリー・キーの存在の識別または検出を検査します。

指定するキーの数は、アプリケーションによって異なります。

<Variable name="IS_INSTALLED">
  <And>
    <RegKeyValueEqual key="KEY NAME A" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME B" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME N" entry="ENTRY NAME" value="VALUE" section="64or32"/>
  </And>
</Variable>
レジストリー・キーのうちの少なくとも 1 つの存在

以下のテンプレートは、レジストリー・キーの少なくとも 1 つの存在の識別または検出を検査します。

<Variable name="IS_INSTALLED" export="true">
  <Or>
    <RegKeyValueEqual key="KEY NAME A" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME B" entry="ENTRY NAME" value="VALUE" section="64or32"/>
    <RegKeyValueEqual key="KEY NAME N" entry="ENTRY NAME" value="VALUE" section="64or32"/>
  </Or>
</Variable>
フィルターにより定義される特定のディレクトリーにあるファイル

以下のテンプレートは、フィルターで定義されている特定のディレクトリー内にあるファイルの識別または検出を検査します。

注: 単一文字ワイルドカードには「?」を使用し、複数文字を表すには「*」ワイルドカードを使用します。
制約事項: ファイル・パス内のスラッシュまたはバックスラッシュは「?」ワイルドカードで置き換えます。
<Variable name="IS_INSTALLED" export="true">
  <Compare type="string" relation="ne">
    <VectorToScalar>
      <Vector filter="?opt?symantec*">
        <FindFilePathEx name="FILENAME"/>
      </Vector>
    </VectorToScalar>
    <ValueOf value="" />
  </Compare>
</Variable>
キー名、キー項目、およびレジストリー・キーのその値

以下のテンプレートは、レジストリー・キーのキー名、キー項目、およびその値の識別または検出を検査します。

<Variable name="IS_INSTALLED" export="true">
  <RegKeyValueEqual key="KEY NAME" entry="ENTRY NAME" value="VALUE" section="64or32"/>
</Variable>
CPU アーキテクチャー

以下のテンプレートは、CPU アーキテクチャーの識別または検出を検査します。

<Variable name="IS_INSTALLED" export="true">
  <Compare relation="eq" type="string">
    <ValueOf value="$(B_PROCESSOR_ARCH)"/>
    <ValueOf value="ARCHITECTURE_CODE"/>
  </Compare>
</Variable>
ARCHITECTURE_CODE は以下のとおりです。
  • AIX、IBM i、および Linux PPC:PPC
  • Linux x86、Mac OS X、および Solaris x86:Ix86
  • Linux on System z:S390
  • HP-UX Itanium:ITANIUM
  • HP-UX PA-RISC:PA-RISC
  • Solaris SPARC:SPARC
ファイル内容および一致する指定ストリング

以下のテンプレートは、ファイル内容および一致する指定ストリングの識別または検出を検査します。

注: スキャナーはテキスト・ファイルのみを読み取ります。バイナリー・ファイルやアーカイブ (.jar.ear.zip など) は読み取ることはできません。
<MultipleInstance>
  <Iterator name="file_list" export="false">
    <FindFilePathEx name="MYFILE.txt" />
  </Iterator>
  <Instance>
    <Variable name="file_read" export="false">
      <ReadFile path="$(file_list)MYFILE.txt" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <VectorToScalar>
          <Vector filter="*MYAPP_version=MYAPP-1.3*">
          <ValueOf value="$(file_read)" />
          </Vector>
        </VectorToScalar>
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP" />
    </Condition>
  </Instance>
</MultipleInstance>
検出対象のファイルの名前は MYFILE.txt で、ストリング値は MYAPP_version=MYAPP-1.3 です。

someprog.jar ファイルが特定のサイズである特定のディレクトリーの 2 つのファイルの存在

以下のテンプレートは、someprog.jar ファイルが特定のサイズである特定のディレクトリー内の 2 つのファイルの存在の識別または検出を検査します。

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <Vector filter="*SOMEPROG.ear?SOMEPROG.war?">
      <FindFilePathEx name="essbase.jar"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <FileInfoCompare absolutePath="$(INSTALL_PATH)someprog.jar" field="size" value="649432" relation="eq" />
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
	</Instance>
</MultipleInstance>
エンドポイント側での BFI パッケージ・データ・レポートの照合 PackageInforMatch オペランドを使用して、エンドポイント側の BFI パッケージ・データ・レポートにリストされているデータを照合できます。

以下は同じ例です。以下の例は、このページで言及されている他の例と組み合わせることができます。

<Variable name="IS_INSTALLED" export="true">
<PackageInfoMatch vendor="RStudio*" name="rstudio-server" version="1.1.*"/></Variable>
特定のファイルの存在

以下のテンプレートは、特定のファイルの存在の識別または検出を検査します。

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="SWTAG_NAME.swtag"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <ValueOf value="$(INSTALL_PATH)" />
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
ファイル・タイプ (名前の一部のみを指定)

以下のテンプレートは、特定の名前の一部のみを持つファイル・タイプの識別または検出を検査します。

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="*.FILETYPE" appendFileName="true"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <Compare type="string" relation="ne">
        <ValueOf value="$(INSTALL_PATH)" />
        <ValueOf value="" />
      </Compare>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
特定のファイルが存在し、別のファイルが存在しない

以下のテンプレートは、特定のファイルの存在 (もう 1 つのファイルが存在しない) の識別または検出を検査します。

<MultipleInstance>
  <Iterator name="INSTALL_PATH">
    <FindFilePathEx name="file1"/>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <FileExists absolutePath="$(INSTALL_PATH)file1"/>
        <Not>
          <Compare type="string" relation="ne">
            <VectorToScalar>
              <FindFilePathEx name="file2"/>
            </VectorToScalar>
            <ValueOf value=""/>
          </Compare>
        </Not>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>
レジストリー・キーにより製品が識別される場合のソフトウェア項目 (Windows システム)

以下のテンプレートは、レジストリー・キーにより製品が識別される場合のソフトウェア項目 (Windows システム) の識別または検出を検査します。

キー・ストリングの一部を比較します。このケースに対応するには、2 つのシグニチャーを作成する必要があります。1 つは、32 ビット・アーキテクチャー用で、もう 1 つは、64 ビット・アーキテクチャー用です。

<MultipleInstance>
  <Iterator name="reg">
    <Vector filter="*000000FF1CE}" ignoreCase="false">
      <RegKeyList root="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" section="32" subkeys="false"/>    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <Compare relation="eq" type="string">
          <Clip endIndex="76" inputString="$(reg)" startIndex="74"/>
          <ValueOf value="140"/>
        </Compare>
        <Compare relation="eq" type="string">
          <Clip endIndex="84" inputString="$(reg)" startIndex="81"/>
          <ValueOf value="0018"/>
        </Compare>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator name="reg">
    <Vector filter="*000000FF1CE}" ignoreCase="false">
      <RegKeyList root="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" section="64" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable name="IS_INSTALLED">
      <And>
        <Compare relation="eq" type="string">
          <Clip endIndex="76" inputString="$(reg)" startIndex="74"/>
          <ValueOf value="140"/>
        </Compare>
        <Compare relation="eq" type="string">
          <Clip endIndex="84" inputString="$(reg)" startIndex="81"/>
          <ValueOf value="0018"/>
        </Compare>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>
エディションおよびバージョンが保管されるレジストリー・キー

以下のテンプレートは、エディションおよびバージョンが保管されるレジストリー・キーの識別または検出を検査します。

このシグニチャーは、特定のバージョン範囲を突き合わせます。

<Variable name="IS_INSTALLED">
  <And>
   <RegKeyValueContains entry="Edition" key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\Data" value="Enterprise" section="64or32"/>
    <RegKeyVersionCompare key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\CurrVer" entry="Version" relation="ge" value="3.00.00.00" section="64or32"/>
    <RegKeyVersionCompare key="HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\SoftwareName\CurrVer" entry="Version" relation="le" value="3.9999.9999.9999" section="64or32"/>
  </And>
</Variable>
ソフトウェア・インスタンス (ソフトウェア・インスタンスのレジストリー・キーの識別による)

以下のテンプレートは、レジストリー・キーの識別によるソフトウェア・インスタンスの識別または検出を検査します。

インスタンス名は、次のように、レジストリー・パスのアスタリスク文字によって反映されます。 HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\SoftwareName\*\Info\CurrVer

このシグニチャーは、特定のエディションおよびバージョン範囲を突き合わせます。このケースに対応するには、2 つのシグニチャーを作成する必要があります。1 つは、32 ビット・アーキテクチャー用で、もう 1 つは、64 ビット・アーキテクチャー用です。

<MultipleInstance>
  <Iterator export="false" name="rg">
    <Vector>
      <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftwareName\*" section="64" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable export="false" name="vr">
      <RegKeyValue entry="Version" key="$(rg)\Info\CurrVer" mustExists="true" section="64"/>
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <RegKeyValueContains entry="Edition" key="$(rg)\Data" section="64" value="Enterprise"/>
        <Contains inputString="$(vr)" position="start" searchedString="3."/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator export="false" name="rg">
    <Vector>
      <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftwareName\*" section="32" subkeys="false"/>
    </Vector>
  </Iterator>
  <Instance>
    <Variable export="false" name="vr">
      <RegKeyValue entry="Version" key="$(rg)\Info\CurrVer" mustExists="true" section="32"/>
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <RegKeyValueContains entry="Edition" key="$(rg)\Data" section="32" value="Enterprise"/>
        <Contains inputString="$(vr)" position="start" searchedString="3."/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action do="SKIP" onValue="false"/>
    </Condition>
  </Instance>
</MultipleInstance>
アンインストール・レジストリー・キー (Windows システム)

以下のテンプレートは、アンインストール・レジストリー・キー (Windows システム) の識別または検出を検査します。

このシグニチャーは、すべてのキーで処理を繰り返し、DisplayName および DisplayVersion の値の特定のパターンを突き合わせます。このケースに対応するには、2 つのシグニチャーを作成する必要があります。1 つは、32 ビット・アーキテクチャー用で、もう 1 つは、64 ビット・アーキテクチャー用です。

<MultipleInstance>
  <Iterator name="reg" export="true">
    <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"     section="32" subkeys="false"/>      </Iterator>
  <Instance>
    <Variable name="valueName" export="true">
      <RegKeyValue entry="DisplayName" key="$(reg)" section="32" />
    </Variable>
    <Variable name="valueVersion" export="true">
      <RegKeyValue entry="DisplayVersion" key="$(reg)" section="32" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <Contains inputString="$(valueName)" searchedString="TestProduct" position="start"/>
        <Contains inputString="$(valueVersion)" searchedString="12.0" position="start"/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>

<MultipleInstance>
  <Iterator name="reg" export="true">
    <RegKeyList root="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"     section="64" subkeys="false"/>
  </Iterator>
  <Instance>
    <Variable name="valueName" export="true">
      <RegKeyValue entry="DisplayName" key="$(reg)" section="64" />
    </Variable>
    <Variable name="valueVersion" export="true">
      <RegKeyValue entry="DisplayVersion" key="$(reg)" section="64" />
    </Variable>
    <Variable name="IS_INSTALLED">
      <And>
        <Contains inputString="$(valueName)" searchedString="TestProduct" position="start"/>
        <Contains inputString="$(valueVersion)" searchedString="12.0" position="start"/>
      </And>
    </Variable>
    <Condition withVariable="IS_INSTALLED">
      <Action onValue="false" do="SKIP"/>
    </Condition>
  </Instance>
</MultipleInstance>